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

将索引从for循环传递到ajax回调函数(JavaScript)

刘狐若
2023-03-14
问题内容

我有一个包含ajax调用的for循环,并且我正在尝试确定将索引从for循环传递给回调函数的最佳方法。这是我的代码

var arr = [2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010];

for (var i = 0; i < arr.length; i++)
{
  $.ajaxSetup({ cache:false })
  $.getJSON("NatGeo.jsp", { ZipCode: arr[i], Radius:   
            document.getElementById("radius").value, sensor: false },      
            function(data)
            { 
              DrawZip(data, arr[i]);
        }
  );
}

当前,由于异步ajax调用,仅传递了arr数组的最后一个值。除了同步运行ajax调用之外,如何将arr数组的每次迭代传递给回调函数?


问题答案:

您可以使用javascript闭包:

for (var i = 0; i < arr.length; i++) {
  (function(i) {
    // do your stuff here
  })(i);
}

或者您可以使用$.each

var arr = [2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010];

$.each(arr, function(index, value) {
  $.ajaxSetup({ cache:false });
  $.getJSON("NatGeo.jsp", { ZipCode: value, Radius:   
    document.getElementById("radius").value, sensor: false },      
    function(data) { 
      DrawZip(data, value);
    }
  );
});


 类似资料:
  • 问题内容: 是否每个递归函数都有一个等效的for循环?(两者都达到相同的结果)。 我有这个递归函数: 假设单词是Set [],并且单词[i] =单词长度为i的集合。 我想做的是:使用一个单词(例如,“ stackoverflow”,没有空格)启动递归,我试图查找该单词是否可以切成子单词(“ stack”,“ over”,“ flow”) ..子词的最小长度为3,并且假设长度为i的子词在Set wo

  • 问题内容: 我如何将数据从随后的php传递回ajax? PHP ajax 我的问题是如何在此处显示值?警报消息给我“未定义”? 问题答案: 您可以按照以下方式进行操作。 JS

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

  • 问题内容: 我正在尝试将一些参数传递给用作回调的函数,该怎么做? 问题答案: 如果您想要更一般的东西,可以使用arguments变量,如下所示: 但是否则,您的示例可以正常工作(可以在测试器中使用arguments [0]代替回调)

  • 问题内容: 将参数传递到匿名onreadystatechange回调的普通纯JavaScript(即非JQuery)方法是什么? 例如: 问题答案: Javascript支持闭包,因此您编写的匿名函数将能够从封闭范围访问和访问。 如果要显式地执行此操作(例如,如果要在代码中的其他位置定义回调函数并重用它),则可以创建一个函数来创建回调。这也使您可以使用不同的名称(例如和)来对变量进行别名别名: 然

  • 问题内容: 我试图将回调函数从控制器传递给指令。 这是回调函数代码: 指令用法: 指令代码: 模板中的回调用法: 但是,这给了我以下错误: 我看过很多类似的问题,但不明白我在哪里错了。 问题答案: 从指令中调用表达式方法时,您需要以格式传递指令中的参数,还应更正指令属性值以像 指令用法: 指令模板