当前位置: 首页 > 面试题库 >

for循环中的AJAX调用不会返回正确的数组位置值

公羊学义
2023-03-14
问题内容

我需要使用AJAX获取一定范围的页面并将它们放入数组中,其中它们在数组中的给定位置等于ifor循环的(这是博客页面的类似于缓存的函数,并且for循环的范围是完全可变的)。我正在做类似以下的事情:

var bongo = new Array();

for (i = 0; i < 10; i++) {

    jQuery.ajax({ type: "GET", url: 'http://localhost', data: queryString, success: function(request) { bongo[i] = request } })

}

问题是,除非我添加async: false.ajax选项(这会使它…
SJAX?),否则将导致请求基本上暂停浏览器,这与我尝试执行的操作背道而驰,回调将始终以11结尾,而我当然希望它将返回的数据从0倒入10的数组的每个插槽中。

我试过用这个替换行:

bongo[i] = jQuery.ajax({ type: "GET", url: 'http://localhost', data: queryString }).responseText

但这没什么区别。


问题答案:

您需要关闭:

var bongo = [];
for (i = 0; i < 10; i++)
{

  (function(i)
    {
      jQuery.ajax(
        {
          type: "GET",
          url: "http://localhost",
          data: queryString,
          success: function(request) { bongo[i] = request } 
        });  
    })(i);
}

循环是内联函数绊倒人的第一位。该bongo[i] = result不叫,直到后来。i那时的值是不同的(很可能是11)。如果要“捕获”或“捕获”的
当前i,则需要创建一个新的范围。用javascript做到这一点的唯一方法是使用另一个函数。



 类似资料:
  • 我有一个哈希映射类型数组列表: 它的一些ID和名称如下: 这是用于循环的代码: 问题是在这一行中: 显示正确的ID和Name,如下所示: 但只有名称可用与条目: 总是返回文本“name”,它是键和返回值“Katie Bailey”。 我的问题是,为什么我不能在进入时拿到钥匙。getKey()?为什么每次迭代都要用“name”作为键?

  • 问题内容: 我是AJAX的新手,我正在编写一个用户脚本,该脚本将处理页面上的一堆链接并为每个链接进行AJAX调用。 简单地说,我有一个包含链接列表的页面。我希望遍历链接并获取AJAX来处理每个链接页面的内容,并报告该页面是否包含指定内容。 我遇到的问题是用于遍历linkList的[i]的值始终为6,应该永远不会。我假设我需要传递一些数据,以便当.done最终触发时,它从AJAX首次触发时知道其[i

  • 这是我的for循环。。。jGRASP说在我的for循环中出现了一个问题,我看不出这个问题,希望能得到一些帮助来修复我的代码。。。 公共类DirectoryLookup{public static void main(String[]args)引发IOException{

  • 当我执行这段代码时,输出是“140”,也就是“28*5”,但它应该是“150”,也就是“28+31+30+31+30”,它应该计算两个月“2月”和“7月”之间的天数...所以这意味着for循环不能正常工作还是怎么的?为什么会这样!你能帮我一下吗??PS:我试图将循环中的j++更改为j+1,但Android Studio说“这不是一个声明”

  • 我遇到了一个相当奇怪的问题,当我试图编码我的机器人的一个特定的部分!为了使其简单简短,我有一个包含各种属性的对象数组(参见代码中的示例)。我想要做的是获取数组中的所有特定属性(例如name)并将其打印到控制台中。我尝试使用一个简单的for循环进行循环,每一个成功的循环,我都要求控制台记录ArrayName[I].name!请参阅代码以获得澄清! 问题是它确实按预期记录了代码--例如,在本例中是Re

  • 问题内容: 今天,有人陪我一起滥用Java 中的关键字。我编写了一个简单的循环来验证数组中是否存在某些内容。假设是一个length数组,这是我的代码: 现在有人告诉我这不是一个很好的编程,因为我在循环内使用了该语句,这将导致垃圾回收发生故障。因此,更好的代码将是: 问题是我无法正确解释为什么第一个for循环不是一个好习惯。有人可以给我一个解释吗? 问题答案: 现在有人告诉我这不是一个很好的编程,因