我有一个包含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:
$.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); } ); });