php - for循环中的JQuery ajax函数表现得很奇怪

标签 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[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,
    // ..
});

请注意 ShankarSangoli 的评论;编写此代码的理想方式不是基于循环,而是从 AJAX 回调函数前进到下一个元素。

关于php - for循环中的JQuery ajax函数表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235197/

相关文章:

php - 将动态数据从 div 传递到同一页面上的另一个 div

php - MySQL参数资源错误

javascript - Backbone.js 我们可以没有任何 tagName 吗?

php - localhost/live - 通过 HTTP_HOST 检测

javascript - forEach 循环中的 jQuery 动画

javascript - web api 2 CORS 不存在 'Access-Control-Allow-Origin' header

javascript - 如何检查 jQuery Globalize 是否已初始化?

javascript - 在 Chrome 上使用 Tab 键时 iFrame 不滚动

php - 数据库的大小。 PHP-MySQL

PHP MySQL 构建一个 3 层多维数组