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

Bro*_*ams 3 javascript ajax jquery closures callback

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

例如,给定:

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

function ProcessData (zData, K)
{
    console.log (K);
}
Run Code Online (Sandbox Code Playgroud)

ProcessData() 每次都会报告0(或K的最后一个值).

如何确保ProcessData()火灾与K的正确值相关或可以获得?

没有包装$get()函数有没有办法做到这一点?

Mat*_*hen 5

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

while (K--)
{
    (function(K)
    {
      $.get
      (
          "BaseURL" + K,
          function (zData, status) {ProcessData (zData, K); }
      );
    })(K);
}
Run Code Online (Sandbox Code Playgroud)

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