Javascript Ajax循环调用:Ajax请求被取消,最后一个请求除外
我在一个循环中有一个ajax调用,如下所示Javascript Ajax循环调用:Ajax请求被取消,最后一个请求除外,javascript,jquery,ajax,Javascript,Jquery,Ajax,我在一个循环中有一个ajax调用,如下所示 reloadSetupAndRecurringAvailable = function( objDiscountRow ) { var intProductId = objDiscountRow.find('.product-id').val(); var strUrl = '/?module=contract_setup_products-new&action=get_setup_and_recurring_availabl
reloadSetupAndRecurringAvailable = function( objDiscountRow ) {
var intProductId = objDiscountRow.find('.product-id').val();
var strUrl = '/?module=contract_setup_products-new&action=get_setup_and_recurring_available';
$.ajax( {
url: strUrl,
data: { 'product_id': intProductId },
success: function( response ) {
fltSetupAvailable = parseFloat( response.data.fltSetupAvailable );
fltRecurringAvailable = parseFloat( response.data.fltRecurringAvailable );
objDiscountRow.find('.setup-available').text( fltSetupAvailable + '%' );
objDiscountRow.find('.recurring-available').text( fltRecurringAvailable + '%' );
}
} );
reloadDiscountProducts = function() {
$('.discount-row').each( function() {
reloadSetupAndRecurringAvailable( $(this) );
} );
}
reloadDiscountProducts();
当代码执行时,在“网络”选项卡中,最后一个ajax调用显示成功,而之前的所有调用都显示在cancelled
状态中
根据我的发现,这是由于异步。ajax请求可能需要任何时间。如何修复代码,使所有请求都处于已完成状态?这是否回答了您的问题?这里没有使用async/Wait或Promissions。所以标签是misleading@Liam您能否解释一下:a)闭包如何影响这个问题b)闭包如何导致以前的调用被取消?您还将如何调用
reloadDiscountProducts
?是通过点击按钮/链接实现的吗?这是否相关:闭包会影响这一点,因为objDiscountRow
会随着每个变量的变化而变化。这是一个典型的突变问题。虽然OP没有给出任何接近so”的信息\_(ツ)_/“