Javascript TypeError: variable is undefined
Javascript TypeError: variable is undefined
目前我正在 Rails 应用程序上开发 Ruby,我正在尝试让以下 JS 与该应用程序一起使用。我遇到的第一个问题是 turbolinks 5.0 阻止页面在初始加载时加载 JS,我必须刷新页面才能加载下面的 JS。我做了一些谷歌搜索,遇到了 this Whosebug answer,但我似乎无法在不抛出错误的情况下正确地将 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();
}
}
};
});
如上评论所述,问题与jQuery
语句在JS中的位置有关。我将 JS 重组为如下所示,现在一切正常。
orders.js
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();
});
});
目前我正在 Rails 应用程序上开发 Ruby,我正在尝试让以下 JS 与该应用程序一起使用。我遇到的第一个问题是 turbolinks 5.0 阻止页面在初始加载时加载 JS,我必须刷新页面才能加载下面的 JS。我做了一些谷歌搜索,遇到了 this Whosebug answer,但我似乎无法在不抛出错误的情况下正确地将 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();
}
}
};
});
如上评论所述,问题与jQuery
语句在JS中的位置有关。我将 JS 重组为如下所示,现在一切正常。
orders.js
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();
});
});