Альтернативные решения для синхронного ajax Метод получения [дубликат]

У меня была такая же проблема. Использование косой черты вместо обратных косых черт (даже на машине Windows) исправило это для меня.

10
задан philtune 8 April 2012 в 01:33
поделиться

2 ответа

Вы можете использовать замыкание (через функцию самоиспускания) для захвата значения i для каждого вызова цикла следующим образом:

for (var i in obj) {
    (function(index) {
        // you can use the variable "index" here instead of i
        $.ajax(/script/).done(function(data){ console.log(data); });
    })(i);
}
11
ответ дан jfriend00 17 August 2018 в 17:54
поделиться
  • 1
    Закрытие - одна из концепций, в которых мне всегда было трудно понять время. Спасибо @ jfriend00, я попробую! – philtune 8 April 2012 в 00:53
  • 2
    Да, это сработало. Я мог бы даже сделать obj[index]. Еще раз спасибо! – philtune 8 April 2012 в 00:56

Вы можете просто создать настраиваемое поле в объекте, который вы отправляете в $ .ajax (), и это будет поле в «this», когда будет выполнен обратный вызов обещания.

Например:

$.ajax( { url: "https://localhost/whatever.php", method: "POST", data: JSON.stringify( object ), custom: i // creating a custom field named "custom" } ).done( function(data, textStatus, jqXHR) { var index = this.custom; } );

8
ответ дан Darwin Airola 17 August 2018 в 17:54
поделиться
  • 1
    Через 5 лет я уже давно забыл, что даже вызвало этот вопрос. ;) – philtune 3 November 2016 в 20:24
  • 2
    Мне нужно было знать, как это сделать для недавнего проекта. Итак, когда я понял это, я попытался также передать информацию другим, которые сказали, что они этого хотят ... – Darwin Airola 10 November 2016 в 20:04
  • 3
    Это лучше с точки зрения асинхронного выполнения jQuery ajax, он явно предоставляет ссылку на объект / объект, когда обратный вызов выполняется последним во времени. – Deep Saurabh 17 August 2017 в 19:56
Другие вопросы по тегам:

Похожие вопросы: