递归AJAX调用被取消



我有一个显示日志文件的页面,我想让用户能够选择和删除这些文件。删除是通过AJAX请求完成的,其中每个用于删除的日志的ID通过参数发送。

问题是,在某些情况下,有数百个日志,而在这些情况下,AJAX请求似乎失败了。我认为是因为通过参数发送的数据太多了。我曾尝试将AJAX请求分解为多个部分,但只有第一个请求被发送,之后所有其他请求都在Chorme中显示为"已取消"。以下是我的代码:

var logFiles = [];
function deleteLogBatch() {
if (logFiles.length == 0) 
return false;

if (logFiles.length > 10) 
var elements = 10;
else 
var elements = logFiles.length;
var params = 'action=deletelog';
for (var i = 0; i < elements; i++) {
params += '&lf' + i + '=' + escape(logFiles.shift());
}
$.ajax({
type: "POST",
url: './ajax/logs.php',
data: params,
success: function(response) {
checkResponse(response);
deleteLogBatch();
}
});
}
$('body').on('click', '#confirm-log-delete', function(event) {
event.preventDefault();
$('.select-log').each(function() {
if ($(this).is(":checked")) {
logFiles.push($(this).attr('id'));
}
});
deleteLogBatch();
}

对于为什么会发生这种情况以及正确的方法,我们将不胜感激。

您应该使用异步ajax调用

$.ajax({
type: "POST",
url: './ajax/logs.php',
async: true,
data: params,
success: function(response) {
checkResponse(response);
deleteLogBatch();
}

});

它不会等待上一次ajax调用

最新更新