我是Ajax的新手,我正在尝试在使用for循环的同时使用Ajax。在Ajax调用之后,我运行了一个函数,该函数使用在Ajax调用中创建的变量。该函数只执行两次。我认为Ajax调用可能没有足够的时间在循环开始之前进行调用。有没有办法在运行函数printWithAjax()之前确认Ajax调用?我不希望在Ajax调用完成之前执行printWithAjax()函数。任何帮助都将不胜感激。
var id;
var vname;
function ajaxCall(){
for(var q = 1; q<=10; q++){
$.ajax({
url: 'api.php',
data: 'id1='+q+'',
dataType: 'json',
async:false,
success: function(data)
{
id = data[0];
vname = data[1];
}
});
printWithAjax();
}//end of the for statement
}//end of ajax call function
发布于 2014-04-25 11:21:44
尝试以下代码:
var id;
var vname;
function ajaxCall(){
for(var q = 1; q<=10; q++){
$.ajax({
url: 'api.php',
data: 'id1='+q+'',
dataType: 'json',
async:false,
success: function(data)
{
id = data[0];
vname = data[1];
},
complete: function (data) {
printWithAjax();
}
});
}//end of the for statement
}//end of ajax call function
只有在ajax“成功”之后,才会执行"complete“函数。因此,尝试在"complete“上调用printWithAjax()。这对你来说应该是可行的。
发布于 2016-09-28 16:36:19
您可以使用.ajaxStop()
或.ajaxComplete()
.ajaxComplete()
在页面上的每个AJAX请求完成后触发。
$( document ).ajaxComplete(function() {
yourFunction();
});
.ajaxStop()
在页面上的所有AJAX请求完成后触发。
$( document ).ajaxStop(function() {
yourFunction();
});
发布于 2014-04-25 10:50:03
将.done()添加到函数中
var id;
var vname;
function ajaxCall(){
for(var q = 1; q<=10; q++){
$.ajax({
url: 'api.php',
data: 'id1='+q+'',
dataType: 'json',
async:false,
success: function(data)
{
id = data[0];
vname = data[1];
}
}).done(function(){
printWithAjax();
});
}//end of the for statement
}//end of ajax call function
https://stackoverflow.com/questions/23283276
复制相似问题