2013-03-27 6 views
0

Я использую реализацию JQuery AJAX для доступа к нескольким JSON и различным URL-адресам. У меня есть массив имен, которым соответствует каждый URL, и хотел бы иметь возможность ссылаться на соответствующее имя, которое идет с соответствующим JSON-файлом в функции обратного вызова запроса AJAX.Обработка множественных обратных вызовов AJAX с уникальными переменными

Я написал образец моего кода до сих пор для тестирования:

var nameList = ['Tom', 'Neil', 'Jane']; 
    for(var i = 0; i < nameList.length; i++){ 
     var currentName = nameList[i]; 
     var newURL = urlFromName(currentName) 
     $.ajax({ 
      type: 'GET', 
      url: newURL, 
      dataype: 'jsonp' 
     }).always(function(data,status, error){ 
       console.log(currentName); 
       console.log(data); 
      }); 
    } 

кода выводит:

 - Neil 
     - Object 
     - Neil 
     - Object 
     - Neil 
     - Object 

Я ищу для каждого объекта, чтобы быть распечатаны с соответствующим именем из списка nameList, который я ему предоставил. Как мне это сделать?

+0

Вы не связывался значение currentName на всегда обратного вызова. Он также должен печатать «Джейн» 3 раза вместо «Нейла», есть ли непонятная ошибка «один за другим»? – Halcyon

+0

во-первых, что сказал Фритц, вам нужна функция внутри цикла for или какое-то другое связывание для currentName. Кроме того, попробуйте JSON.stringify для более удобного вывода объекта данных. –

ответ

0

Попробуйте это:

var nameList = ['Tom', 'Neil', 'Jane']; 
    for(var i = 0; i < nameList.length; i++){ 
     var currentName = nameList[i]; 
     var newURL = urlFromName(currentName) 
     $.ajax({ 
      type: 'GET', 
      url: newURL, 
      dataype: 'jsonp', 
      currentName: currentName // <-- Add this here 
     }).always(function(data,status, error){ 
       console.log(this.currentName); // <-- Use the 'this' to get it 
       console.log(data); 
      }); 
    } 
+0

отлично! так просто - спасибо – pinktoad

Смежные вопросы