2016-04-03 66 views
0
 function getResults(){ 
      var text = encodeURIComponent(searchField.val().trim()); 
      $.ajax({ 
       type: "GET", 
       url: "https://en.wikipedia.org/w/api.php?action=query&prop=extracts&exintro&format=json&titles=" + text, 
       dataType: "jsonp", 
       success: function(data){ 
        showResults(data, text); 
       } 
      }); 
    } 

    function showResults(data, text) { 
      results.show(); 
      var query = "https://en.wikipedia.org/wiki/" + text; 
      for (var id in data.query.pages) { 
        var code = "<a href=" + query + " class='results'>" + "<div class='results'>"; 
        code = code + "<strong>" + id.title + "</strong>"; 
        code = code + "<br>"; 
        code = code + id.extract; 
        code = code + "</div></a>" 
        $(code).appendTo(results); 
      } 
    } 

在showResults函數中,它將id.title和id.extract顯示爲undefined。這是爲什麼?我究竟做錯了什麼?爲什麼我的代碼不能獲取JSON值?

回答

2

當你這樣做:

for (var id in data.query.pages) 

的,id變量充滿了這是一個簡單的字符串的屬性名稱。如果你想獲得該物業之價值,你必須引用該財產的價值爲:

data.query.pages[id] 

或者,如果這是一個對象,你那麼想.title從,那麼你就需要

data.query.pages[id].title 

data.query.pages[id].extract 
1

這是因爲遍歷對象時(使用for-var-in-object循環)時,var(在這種情況下id)是關鍵,但如果你需要的值,使用object[key]語法。請檢查下面的代碼

$.ajax({ 
 
    type: "GET", 
 
    url: "https://en.wikipedia.org/w/api.php?action=query&prop=extracts&exintro&format=json&titles=newton", 
 
    dataType: "jsonp", 
 
    success: function(data) { 
 
    for (var id in data.query.pages) 
 
     document.write(data.query.pages[id].title); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

1

在你的情況,您只使用key => '321123'。要獲得對象使用價值key。獲取對象data.query.pages[id]

for (var id in wiki = data.query.pages){ 
    wiki[id].title; 
    wiki[id].extract; 
} 

這一個應該工作。

function showResults(data, text) { 
       results.show(); 
       var query = "https://en.wikipedia.org/wiki/" + text; 
       for (var id in wiki = data.query.pages) { 
         var code = "<a href=" + query + " class='results'>" + "<div class='results'>"; 
         code = code + "<strong>" + wiki[id].title + "</strong>"; 
         code = code + "<br>"; 
         code = code + wiki[id].extract; 
         code = code + "</div></a>" 
         $(code).appendTo(results); 
       } 
     } 
相關問題