【发布时间】:2014-06-10 14:05:15
【问题描述】:
我是 Ajax 新手,我正在尝试在使用 for 循环时使用 Ajax。在 Ajax 调用之后,我正在运行一个函数,该函数使用在 Ajax 调用中创建的变量。该函数只执行两次。我认为 Ajax 调用可能没有足够的时间在循环开始之前进行调用。有没有办法在运行 printWithAjax() 函数之前确认 Ajax 调用? 我不希望 printWithAjax() 函数在 Ajax 调用完成之前执行。 任何帮助将不胜感激。
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
【问题讨论】:
-
由于您使用的是
asycn:false(如果可能的话,永远不要使用它),打印只会在ajax完成后执行......跨度> -
但正确的解决方案是在成功回调中调用 print 函数并将 id 和 vname 作为参数传递
-
所以你想让 printWithAjax 为每个 ajax 调用触发一次?
-
like jsfiddle.net/arunpjohny/yA8Zu/2 - 你是否也想确保ajax请求按顺序执行,如果没有你可以删除
async:false -
既然您只是传递数字 1 - 10,为什么不将一个数组或范围 (1-10) 传递给您的服务器并只进行一次 ajax 调用呢?而不是发出 10 个 ajax 请求。你也可以循环遍历数据来控制它的显示。
标签: javascript jquery ajax json