"get_ing_id"获取一个字符串,根据字符串查找数据库,获取相关的id数据。在此示例中,它需要检索“65”和“66”,在执行代码时它会成功执行这些操作。
var ings = [];
var ingsSearch = [];
var i = 2;
var k = 0;
ings[0] = 'apple';
ings[1] = 'banana';
function next(){
for(j=0;j<i;j++){
if(ings[j] != 0){
$.ajax({
url: burl+'index.php/ajax/get_ing_id',
type: 'POST',
data: 'name='+ings[j],
success: function(data){
ingsSearch[k] = data;
alert(ingsSearch[k]);
k++;
alert(k);
}
});
}
}
alert(ingsSearch[0]);
alert(ingsSearch[1]);
}
执行代码时,我会按顺序收到警告框:
- 66
- 1
- 65
- 2
- 未定义
- 未定义
应该是这样的
- 66
- 1
- 65
- 2
- 66
- 65
那么我哪里做错了呢?我对javascript不是很有经验,如果我能得到任何帮助,我将不胜感激。感谢您的宝贵时间!
最佳答案
尝试将 ajax
对象的 async
属性设置为 false
。默认为 true
因此不能保证调用将按顺序完成:
$.ajax({
async: false,
// ..
});
- > ajax()jQuery <-- 参见
async
属性
请注意 ShankarSangoli 的评论;编写此代码的理想方式不是基于循环,而是从 AJAX 回调函数前进到下一个元素。
关于php - for循环中的JQuery ajax函数表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235197/