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

时间:2010-07-14 09:03:54

标签: jquery xml ajax variables get

我正在使用此代码获取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的名称)

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

3 个答案:

答案 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?