我遇到了一个问题,我需要使用从Ajax代码中获取的数据,它在返回之前抓取变量,所以我认为我必须使用Promises或回调。我看了各种关于Promises的文档和教程,这一切都让人非常困惑。我只是通过一次ajax调用发回一个int。我认为这应该很简单。
这是我的JS / JQuery:
$('.products').on('click', '.btnaddtocart', function (e) {
var itemid = $(this).attr('name');
var qty = $(this).prev('input').val();
var qtyAvailable = $("#qty" + itemid).html();
var qtyInCart = 0;
$.ajax({
url: '/Shop/getItemCountInCart',
data: { id: itemid },
success: function (result) {
qtyInCart = result;
console.log("result: " + result);
}
});
console.log("qty in cart: " + qtyInCart);
qtyInCart始终为0且结果具有数字,但在qtyInCart之后输出。
答案 0 :(得分:1)
这是正确的,你只需要在成功函数中使用qtyInCar放置console.log("qty in cart: " + qtyInCart);
和所有代码。
您不需要使用Promises。但是,由于它是异步调用而您不知道何时将分配qtyInCart
,因此您必须将涉及此变量的所有代码放在success
函数中。