我是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
答案 0 :(得分:50)
试试这段代码:
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
&#34;完成&#34;函数仅在&#34;成功&#34;之后执行。 of ajax。因此,尝试在&#34;完成&#34;上调用printWithAjax()。这应该适合你。
答案 1 :(得分:21)
您可以使用.ajaxStop()
或.ajaxComplete()
.ajaxComplete()
会触发。
$( document ).ajaxComplete(function() {
yourFunction();
});
完成页面上的所有AJAX请求后, .ajaxStop()
会触发。
$( document ).ajaxStop(function() {
yourFunction();
});
答案 2 :(得分:10)
将.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
答案 3 :(得分:1)
你应该在头部设置async = false。 使用post / get而不是ajax。
jQuery.ajaxSetup({ async:false });
$.post({
url: 'api.php',
data: 'id1=' + q + '',
dataType: 'json',
success: function (data) {
id = data[0];
vname = data[1];
}
});
答案 4 :(得分:1)
试
var id;
var vname;
function ajaxCall(){
for(var q = 1; q<=10; q++){
$.ajax({
url: 'api.php',
data: 'id1='+q+'',
dataType: 'json',
success: function(data)
{
id = data[0];
vname = data[1];
printWithAjax();
}
});
}//end of the for statement
}//end of ajax call function
答案 5 :(得分:0)
将.done()
附加到您的ajax请求。
$.ajax({
url: "test.html",
context: document.body
}).done(function() { //use this
alert("DONE!");
});
请参阅.done()
的{{3}}