相关疑难解决方法(0)

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

我有一个封闭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]);
        }
  );
}
Run Code Online (Sandbox Code Playgroud)

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

javascript ajax closures loops callback

31
推荐指数
2
解决办法
2万
查看次数

for循环中的XMLHttpRequest

我试图在for循环中发出几个服务器请求.我找到了这个问题并实施了建议的解决方案.但它似乎不起作用.

    for (var i = 1; i <= 10; i++)
    {
    (function(i) {
    if(<some conditions>)
    {
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp[i]=new XMLHttpRequest();
      } else { // code for IE6, IE5
        xmlhttp[i]=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp[i].onreadystatechange=function() {
        if (xmlhttp[i].readyState==4 && xmlhttp[i].status==200) {
          document.getElementById("preselection").innerHTML=xmlhttp[i].responseText;
        }
      }
      xmlhttp[i].open("GET","getBuoys.php?q="+i,true);
      xmlhttp[i].send();
    }
})(i);
}
Run Code Online (Sandbox Code Playgroud)

如果我删除了循环和更改所有XMLHTTP [I]到XMLHTTP,一切工作就好了一个元素,但我不能让几个请求.在此先感谢您的任何建议.

javascript ajax xmlhttprequest

9
推荐指数
1
解决办法
1万
查看次数

循环中的异步性

我正在使用jQuery的$.getJSON()API从给定的URL中检索一组实用程序的数据.我真的想找到一种方法来重用每个实用程序的代码(它们都完全相同).由于循环正在执行而不考虑ajax调用,因此我无法找到保留循环值的方法.

我知道,那个描述很糟糕,所以这里是一个代码片段,它将它定义得更好一些:

var utility_types = [ 'Electricity', 'Gas', 'Water' ];

/** Retrieve known utility providers for the given zip code */
for( var i = 0; i < utility_types.length; i++ ) {
  var type = utility_types[i];

  $.getJSON( '/addresses/utilities/' + zip + '/' + type + '.json', null, function( data, status ) {
    alert( 'Processing ' + type );
  });
}
Run Code Online (Sandbox Code Playgroud)

我需要找到一种方法将类型值传递给回调,以便我可以应用正确的语法.没有它,所有3个循环都在针对"Water"实用程序执行.我知道为什么它工作,我只是想知道是否有一个合理的解决办法.

谢谢.

ajax jquery

5
推荐指数
1
解决办法
176
查看次数

标签 统计

ajax ×3

javascript ×2

callback ×1

closures ×1

jquery ×1

loops ×1

xmlhttprequest ×1