Php for循环中的JQuery ajax函数行为怪异
“get_ing_id”获取一个字符串,查找数据库并根据该字符串检索相关的id数据。在本例中,它需要检索“65”和“66”,当代码执行时,它会成功地检索到这两个字段Php for循环中的JQuery ajax函数行为怪异,php,javascript,jquery,ajax,codeigniter,Php,Javascript,Jquery,Ajax,Codeigniter,“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
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]);
}
var-ings=[];
var Ingsearch=[];
var i=2;
var k=0;
ings[0]=“苹果”;
ings[1]=“香蕉”;
函数next(){
对于(j=0;j请尝试将ajax
对象的async
属性设置为false
。默认值为true
,因此不能保证调用将按顺序完成:
$.ajax({
async: false,
// ..
});
- 您必须了解,默认情况下,AJAX是异步的-服务器一响应就调用success函数,这很可能发生在调用两个
alert
语句之后;因此lngsSearch[0]
lngsSearch[1]
在您试图输出它们时,实际上还没有设置它们。该死,这解决了一个完全无关的问题,这个问题困扰了我一段时间。每天都在学习新的东西(:将async
设置为false是不可取的,因为它将完全停止页面,直到服务器响应。请尝试避免这种情况,并使用回调机制。