Javascript 在Ajax调用完成后执行函数
我是Ajax新手,我尝试在使用for循环的同时使用Ajax。在Ajax调用之后,我正在运行一个函数,该函数使用在Ajax调用中创建的变量。该函数只执行两次。我认为Ajax调用可能没有足够的时间在循环开始之前进行调用。在运行函数printWithAjax()之前,是否有方法确认Ajax调用我不希望在Ajax调用完成之前执行printWithAjax()函数。非常感谢您的帮助Javascript 在Ajax调用完成后执行函数,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我是Ajax新手,我尝试在使用for循环的同时使用Ajax。在Ajax调用之后,我正在运行一个函数,该函数使用在Ajax调用中创建的变量。该函数只执行两次。我认为Ajax调用可能没有足够的时间在循环开始之前进行调用。在运行函数printWithAjax()之前,是否有方法确认Ajax调用我不希望在Ajax调用完成之前执行printWithAjax()函数。非常感谢您的帮助 var id; var vname; function ajaxCall(){ for(var q = 1; q<=1
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
var-id;
var-vname;
函数ajaxCall(){
对于(var q=1;q将.done()
附加到ajax请求中
$.ajax({
url: "test.html",
context: document.body
}).done(function() { //use this
alert("DONE!");
});
有关.done()
的信息,请参见。您应该在head中设置async=false。
使用post/get而不是ajax
jQuery.ajaxSetup({
异步:false
}))
试一试
var-id;
var-vname;
函数ajaxCall(){
对于(var q=1;qAdd.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
var-id;
var-vname;
函数ajaxCall(){
对于(var q=1;q请尝试以下代码:
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
var-id;
var-vname;
函数ajaxCall(){
对于(var q=1;q您可以使用或
.ajaxComplete()
在页面上的每个AJAX请求完成后激发
$( document ).ajaxComplete(function() {
yourFunction();
});
$( document ).ajaxStop(function() {
yourFunction();
});
.ajaxStop()
在完成页面上的所有AJAX请求后激发
$( document ).ajaxComplete(function() {
yourFunction();
});
$( document ).ajaxStop(function() {
yourFunction();
});
因为您使用的是asycn:false
(如果可能,永远不要使用它),打印将仅在ajax完成后执行…但正确的解决方案是在成功回调中调用print函数,并将id和vname作为参数传递。您希望printWithAjax为每个ajax调用触发一次吗?例如-如果不能删除,您还想确保ajax请求按顺序执行吗async:false
既然您只需要传递数字1-10,为什么不将数组或范围(1-10)传递给您的服务器并只进行一次ajax调用呢?而不是进行10次ajax请求。您还可以循环数据以控制其显示。完成与成功
相同。您需要”。始终()
@MichelAyres我认为成功只有在成功的情况下才会运行,不管发生什么事情,成功都会运行…无论发生什么事情,都会运行
另请看一看否,ajaxComplete执行得很早,实际上毫无用处。无论ajax调用成功与否,都会执行complete回调错误!每次都会调用complete