我被困在这里,任何帮助将不胜感激。
我有一个项目列表框,我想通过 AJAX(调用 Web 服务)检索列表中每个项目的数据。需要根据调用数据的行来操作检索到的数据。
如果我传入 row 参数,它的值始终比行数大 1。
有没有办法传入 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;
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);
}
当然,您从循环发出 AJAX 请求是一个重大危险信号。这是非常低效的;考虑进行一次调用并从服务器返回一个数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)