JQuery. получить вар из ajax в цикле - PullRequest
0 голосов
/ 24 февраля 2012
for (var i = 0; i < 3; i++){
    $.ajax({
        url: "ajax.php",
        success: function(data){
            alert(i);
        }
    });
}

Мне нужно решение, чтобы получать оповещения с «0», «1» и «2». В это время я вижу 3 предупреждения с «3».

Ответы [ 3 ]

4 голосов
/ 24 февраля 2012

Вы должны поставить точку вокруг вашего $.ajax() звонка.

for (var i = 0; i < 3; i++){
    (function (loop_var) {
        $.ajax({
            url: "ajax.php",
            success: function(data){
                alert(loop_var);
            }
        });
    })(i);
}

В настоящее время он выводит 3, поскольку время, когда Ajax возвращает значение i, действительно 3.

2 голосов
/ 24 февраля 2012

Используйте оболочку анонимной функции вокруг кода, чтобы создать замыкание, которое будет сохранять значение до получения асинхронного ответа:

for (var i = 0; i < 3; i++){

  (function(i){

    $.ajax({
      url: "ajax.php",
      success: function(data){
        alert(i);
      }
    });

  })(i);

}
0 голосов
/ 24 февраля 2012

Передайте значение i на страницу ajax.php в качестве параметра. Страница ajax.php должна вернуть i на страницу вызова. Так что пусть страница ajax.php возвращает i. Вы можете использовать объекты json или тривиальную строку, разделенную каналом, для хранения возвращаемых значений из ajax.php.

for (var i = 0; i < 3; i++){
    $.ajax({
        data: {par: i},
        url: "ajax.php",
        success: function(data){
            //data is a pipe-separated string
            var cnt = data.split("|")[0];
            alert(cnt);
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...