Как я могу передать параметр в обратный вызов ajax-запроса jQuery? - PullRequest
3 голосов
/ 06 июля 2010

Мне нужно передать дополнительные переменные в функцию обратного вызова 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 Ответ

5 голосов
/ 06 июля 2010

Нет.Из-за того, как работают замыкания, все внутренние функции будут закрываться по одной и той же переменной K (которая в итоге будет равна 0).Вам нужен дополнительный уровень косвенности где-то для создания отдельных областей.Например:

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

Кроме того, второй параметр функции успеха не должен называться K. Этот параметр получит статус, который затем будет затенять желаемую K.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...