Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:变量未定义_Javascript_Ruby On Rails_Turbolinks - Fatal编程技术网

Javascript TypeError:变量未定义

Javascript TypeError:变量未定义,javascript,ruby-on-rails,turbolinks,Javascript,Ruby On Rails,Turbolinks,目前我正在开发一个RubyonRails应用程序,我正在尝试让下面的JS与该应用程序一起工作。我遇到的第一个问题是turbolinks 5.0阻止页面在初始加载时加载JS,我必须刷新页面才能加载下面的JS。我在谷歌上搜索了一下,发现了一些问题,但我似乎无法让JS正常运行而不抛出错误。我们将非常感谢您的任何帮助 orders.js console.log('inside orders.js'); $(document).on('turbolinks:load', function() { //

目前我正在开发一个RubyonRails应用程序,我正在尝试让下面的JS与该应用程序一起工作。我遇到的第一个问题是turbolinks 5.0阻止页面在初始加载时加载JS,我必须刷新页面才能加载下面的JS。我在谷歌上搜索了一下,发现了一些问题,但我似乎无法让JS正常运行而不抛出错误。我们将非常感谢您的任何帮助

orders.js

console.log('inside orders.js');

$(document).on('turbolinks:load', function() {
// Your JS here
var payment;

jQuery(function() {
  Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'));
  return payment.setupForm();
});

payment = {
  setupForm: function() {
    return $('#new_order').submit(function() {
      $('input[type=submit]').attr('disabled', true);
      Stripe.card.createToken($('#new_order'), payment.handleStripeResponse);
      return false;
    });
  },
  handleStripeResponse: function(status, response) {
    if (status === 200) {

      // return alert(response.id);
      $('#new_order').append($('<input type="hidden" name="stripeToken" />').val(response.id));
      return $('#new_order')[0].submit();

    } else {

      // return alert(response.error.message);
      return $('#stripe_error').text(response.error.message).show();

    }
  }
};
});
console.log('inside orders.js');

$(document).on('turbolinks:load', function() {
// Your JS here
var payment;

payment = {
  setupForm: function() {
    return $('#new_order').submit(function() {
      $('input[type=submit]').attr('disabled', true);
      Stripe.card.createToken($('#new_order'), payment.handleStripeResponse);
      return false;
    });
  },

  handleStripeResponse: function(status, response) {
    if (status === 200) {

      // return alert(response.id);
      $('#new_order').append($('<input type="hidden" name="stripeToken" />').val(response.id));
      return $('#new_order')[0].submit();

    } else {

      // return alert(response.error.message);
      return $('#stripe_error').text(response.error.message).show();

    }
  }
};

jQuery(function() {
  Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'));
  return payment.setupForm();
});
});
console.log('insideorders.js');
$(document).on('turbolinks:load',function(){
//你的JS在这里
风险值支付;
jQuery(函数(){
Stripe.setPublishableKey($('meta[name=“Stripe key”]”)attr('content');
返回付款。setupForm();
});
付款={
setupForm:function(){
返回$('#新订单')。提交(函数(){
$('input[type=submit]').attr('disabled',true);
Stripe.card.createToken($('new#u order'),payment.handleStripeResponse);
返回false;
});
},
HandleStripereResponse:功能(状态、响应){
如果(状态===200){
//返回警报(response.id);
$('#新订单')。追加($('.val(response.id));
返回$('new_order')[0]。提交();
}否则{
//返回警报(response.error.message);
返回$('#stripe_error').text(response.error.message).show();
}
}
};
});

如上所述,这个问题与jQuery语句在JS中的位置有关。我对JS进行了如下重构,现在一切都正常了

orders.js

console.log('inside orders.js');

$(document).on('turbolinks:load', function() {
// Your JS here
var payment;

jQuery(function() {
  Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'));
  return payment.setupForm();
});

payment = {
  setupForm: function() {
    return $('#new_order').submit(function() {
      $('input[type=submit]').attr('disabled', true);
      Stripe.card.createToken($('#new_order'), payment.handleStripeResponse);
      return false;
    });
  },
  handleStripeResponse: function(status, response) {
    if (status === 200) {

      // return alert(response.id);
      $('#new_order').append($('<input type="hidden" name="stripeToken" />').val(response.id));
      return $('#new_order')[0].submit();

    } else {

      // return alert(response.error.message);
      return $('#stripe_error').text(response.error.message).show();

    }
  }
};
});
console.log('inside orders.js');

$(document).on('turbolinks:load', function() {
// Your JS here
var payment;

payment = {
  setupForm: function() {
    return $('#new_order').submit(function() {
      $('input[type=submit]').attr('disabled', true);
      Stripe.card.createToken($('#new_order'), payment.handleStripeResponse);
      return false;
    });
  },

  handleStripeResponse: function(status, response) {
    if (status === 200) {

      // return alert(response.id);
      $('#new_order').append($('<input type="hidden" name="stripeToken" />').val(response.id));
      return $('#new_order')[0].submit();

    } else {

      // return alert(response.error.message);
      return $('#stripe_error').text(response.error.message).show();

    }
  }
};

jQuery(function() {
  Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'));
  return payment.setupForm();
});
});
console.log('insideorders.js');
$(document).on('turbolinks:load',function(){
//你的JS在这里
风险值支付;
付款={
setupForm:function(){
返回$('#新订单')。提交(函数(){
$('input[type=submit]').attr('disabled',true);
Stripe.card.createToken($('new#u order'),payment.handleStripeResponse);
返回false;
});
},
HandleStripereResponse:功能(状态、响应){
如果(状态===200){
//返回警报(response.id);
$('#新订单')。追加($('.val(response.id));
返回$('new_order')[0]。提交();
}否则{
//返回警报(response.error.message);
返回$('#stripe_error').text(response.error.message).show();
}
}
};
jQuery(函数(){
Stripe.setPublishableKey($('meta[name=“Stripe key”]”)attr('content');
返回付款。setupForm();
});
});

“不抛出错误”
-什么错误?哪一行抛出错误?发生这种情况时的运行时值是什么?Jquery(函数(){return“sth”});如果没有太多细节,这是毫无意义的,我会说这是因为您使用
$
在ready上执行jQuery,然后再次检查jQuery是否使用
jQuery
准备就绪,基本上使用两个不同的值调用ready两次
$
vs
jQuery