jQuery的ajax成功函数的额外参数

我正在使用以下代码获取XML文件:

function getMaps(){ toLoad = loadMaps.length; for (var i = 0; i < loadMaps.length; i++){ $.ajax({ type: "GET", url: loadMaps[i], dataType: "xml", success: processMap }); } } 

哪个工作正常,但我想给processMap另一个参数(即loadMaps [i],存储加载的xml的名称)

我不知道如何在不诉诸全局变量的情况下做到这一点,这不是我想要的。

jQuery success callback有三个参数,无法更改或扩展。 所以你需要在一个匿名函数中调用你的函数来关闭。

 for (var i = 0; i < loadMaps.length; i++){ $.ajax({ type: "GET", url: loadMaps[i], dataType: "xml", success: function(xhr, textStatus, error){ processMap(loadMaps[i]); } }); } 
 function getMaps(){ toLoad = loadMaps.length; for (var i = 0; i < loadMaps.length; i++){ $.ajax({ type: "GET", url: loadMaps[i], dataType: "xml", success: function() { // do anything processMap(x,y,z,'foo'); } }); } } 

接受问题的问题是“i”将始终与循环中的最后一个值,至少Success事件发生得比循环的下一次迭代更快,这几乎从未发生过。

以下是它在我的案例中的工作原理:

 function getMaps(){ toLoad = loadMaps.length; for (var i = 0; i < loadMaps.length; i++){ $.ajax({ type: "GET", url: loadMaps[i], dataType: "xml", success: (function(loadMap){ return function processMap(response){ // code of processMap function ... alert(loadMap); } })(loadMaps[i]) }); } } 

以下是类似问题的原始答案: 如何将多个参数传递给Prototype中的onSuccess函数?