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函数?