2016-04-03 31 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); 
       } 
     } 
相关问题