我有一个for循环包含ajax调用,我试图确定最佳的方法将索引从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数组的最后一个值。我如何将每个arr数组的迭代传递给回调函数,除了同步运行ajax调用?
非常感谢您提供任何和所有的帮助。
你可以使用javascript闭包:
for (var i = 0; i < arr.length; i++) { (function(i) { // do your stuff here })(i); }
或者你可以只使用$ .each:
var arr = [2001,2010]; $.each(arr,function(index,value) { $.ajaxSetup({ cache:false }); $.getJSON("NatGeo.jsp",{ ZipCode: value,Radius: document.getElementById("radius").value,function(data) { DrawZip(data,value); } ); });