Установлен неправильный параметр для успешного выполнения jquery $ .ajax get - PullRequest
1 голос
/ 17 июля 2010

У меня есть массив, в котором хранятся несколько URL-адресов файлов XML, которые необходимо загрузить.В случае успеха эти файлы должны быть обработаны.Но именно здесь все идет не так.Проблема вполне очевидна:

for (var i = 0; i < loadMaps.length; i++){

    var currentMap = loadMaps[i];

    $.ajax({
      type: "GET",
      url: currentMap,
      dataType: "xml",
      success: function(xml, textStatus, error){
        processMap(xml, currentMap)
      }
    });
}

Как видите, он проходит по массиву и загружает правильную карту.Это замечательно.

Но к тому времени, когда файл загружен, загружается и другой файл!

И, как таковая, переменная currentMap изменилась.

Таким образом, оба файла будут обрабатываться под одним и тем же именем.Что не так.

Какой лучший способ исправить это?

Ответы [ 2 ]

2 голосов
/ 17 июля 2010

Это потому, что по умолчанию JQuery устанавливает для асинхронного значение true. Если вам требуется все в определенном порядке, вам нужно либо установить его в false, либо сохранить все во временном объекте, который обрабатывается в определенном порядке, когда завершен весь GET.

0 голосов
/ 17 июля 2010

Я думаю, что должен работать так:

for (var i = 0; i < loadMaps.length; i++){
    $.ajax({
      type: "GET",
      url: loadMaps[i],
      dataType: "xml",
      success: function(xml, textStatus, error){
        processMap(xml, loadMaps[i])
      }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...