2016-05-24 17 views
0

我正在嘗試對維基百科API進行AJAX調用,循環訪問先前調用維基百科API的結果。ajax調用擾碼迭代器值

var intro = []; 

for (var i in json.query.search) { 
     (function(i) { 
     $.getJSON("https://en.wikipedia.org/w/api.php?action=query&format=json&prop=extracts&list=&meta=&titles=" + link[i] + "&callback=?&exsentences=1&exintro=1", function(data) { 
      for (var key in data.query.pages) { 
      var temp = data.query.pages[key].extract; 
      intro.push(temp); 
      break; 
      } 
      console.log(intro); 
      $('#results-div').append("<div class='col-xs-12'><a target='_blank' href='https://en.wikipedia.org/wiki/" + link[i] + "'><div class='result-inner'><h2 class='text-center'>" + pageTitle[i] + "</h2>" + intro[i] + "</div></a></div>"); 
     }); 
     })(i); 
    } 

的getJSON不通過結果去爲了(i的值,如果調用的getJSON的成功函數中,以隨機的順序變爲0-10,而如果它被稱爲它的外面,它會去從0-10開始依次)。因此,附加值的順序不正確。

不僅如此,由來自getJSON的數據填充的intro數組並不總是對應於linkpageTitle數組(相互對應)的值。這是getJSON使用的i值與當前在循環中迭代的值不同。例如當我從0開始時,getJSON的第一個呼叫可以使用5作爲i

如何獲取getJSON以使用正確的迭代器值?

回答

0

我不知道,你可以強制的getJSON來創建特定的順序密鑰的對象,但你控制迭代的順序,你可以寫你自己的循環:

for (var j = 0; j < data.query.pages.length; j++) { 
    var temp = data.query.pages[j].extract; 
    intro.push(temp); 
} 
+0

不工作,因爲我特別需要進行第二次不同的調用以獲取* intro * –