如何将参数传递给jQuery ajax请求的回调?

时间:2010-07-05 22:14:12

标签: javascript jquery ajax callback closures

我需要将额外的变量传递给jQuery,ajax回调函数。

例如,给定:

while (K--)
{
    $.get
    (
        "BaseURL" + K,
        function (zData, K) {ProcessData (zData, K); }
    );
}

function ProcessData (zData, K)
{
    console.log (K);
}

ProcessData()每次都会报告0(或者K的最后一个值是什么)。

如何确保ProcessData()触发或获得正确的K值?

如果没有将$get()包装在函数中,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:5)

没有。由于闭包的工作方式,所有内部函数都将关闭相同的K变量(最终等于0)。您需要在某处创建一个额外的间接级别来创建单独的范围。 E.g:

while (K--)
{
    (function(K)
    {
      $.get
      (
          "BaseURL" + K,
          function (zData, status) {ProcessData (zData, K); }
      );
    })(K);
}

此外,成功函数的第二个参数不应该被称为K.该参数将获得状态,然后将影响所需的K.