2016-04-03 14 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が未定義であることを示しています。何故ですか?私は間違って何をしていますか?私のコードが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); 
       } 
     } 
関連する問題