Javascript ajax调用循环-访问循环计数器?

Javascript ajax调用循环-访问循环计数器?,javascript,ajax,Javascript,Ajax,我被困在这里,任何帮助都将不胜感激 我有一个项目列表框,我想通过AJAX(调用Web服务)检索列表中每个项目的数据。检索到的数据需要根据调用它的行进行操作。 如果传入row参数,其值始终比行数大一。 有没有一种方法可以传递ajax调用启动时的值 var NumRows = list.options.length; for ( var row = 0; row < NumRows; row ++ ) { var Value = list.options[r

我被困在这里,任何帮助都将不胜感激

我有一个项目列表框,我想通过AJAX(调用Web服务)检索列表中每个项目的数据。检索到的数据需要根据调用它的行进行操作。 如果传入row参数,其值始终比行数大一。 有没有一种方法可以传递ajax调用启动时的值

    var NumRows = list.options.length;
    for ( var row = 0; row < NumRows; row ++ )
    {
      var Value = list.options[row].value;
      var xmlHttpObj = CreateXmlHttpRequestObject();
      if ( xmlHttpObj != null )
      {
        xmlHttpObj.open( "POST", "Async.ashx?arg1=GetPhysicalPathInfo&arg2=" + Value, true );
        xmlHttpObj.onreadystatechange = function ( row )
        {
          // code that needs to know what row we were from
        }
      }
      xmlHttpObj.send();
    }
var NumRows=list.options.length;
对于(变量行=0;行
创建具有自动执行功能的闭包:

var NumRows = list.options.length;
for ( var row = 0; row < NumRows; row ++ )
{
  !function(row) {
      var Value = list.options[row].value;
      var xmlHttpObj = CreateXmlHttpRequestObject();
      if ( xmlHttpObj != null )
      {
        xmlHttpObj.open( "POST", "Async.ashx?arg1=GetPhysicalPathInfo&arg2=" + Value, true );
        xmlHttpObj.onreadystatechange = function ()
        {
          // code that needs to know what row we were from
        }
      }
      xmlHttpObj.send();
  }(row);
}
var NumRows=list.options.length;
对于(变量行=0;行

当然,从循环发出AJAX请求是一个主要的危险信号。这是非常低效的;考虑调用一个并从服务器返回一个数组。

这是浪费HTTP请求(多Ajax调用)。它必须是一次一个吗?只是每个请求检索一个相当大的数据块。不管怎样,我只是将该行作为参数传递给ajax请求,然后在返回值中传递回去。谢谢你看这个。这个“名单”是什么?selectbox或ul列表?我有一个很大的绘图区域,循环用于在信息可用时填充部分绘图区域。目前,在一次回发中检索并填充整个区域需要几秒钟的时间。@WonderfulDay:这很公平。我刚才说的是,一般来说,来自循环的AJAX调用是一个危险信号。它花了一些时间,但看起来它做到了——它是关于隔离行值,并确保它是异步函数使用的值。非常感谢。