我正在使用此代码获取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的名称)
我不知道如何在不诉诸全局变量的情况下做到这一点,这不是我想要的。
答案 0 :(得分:5)
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]);
}
});
}
答案 1 :(得分:1)
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');
}
});
}
}
答案 2 :(得分:1)
接受问题的问题&#34;我&#34;将始终使用循环中的最后一个值,至少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])
});
}
}
以下是类似问题的原始答案:how to pass multiple arguments to onSuccess function in Prototype?