2016-10-19 8 views
1

私は次のコードで次のJSONにアクセスできないという問題が発生しています。私はネットワークビューアでJSONを見ることができますが、エラーはありませんが、apiReturn関数で何も実行されず、理由を理解できません。JSONデータにアクセスできない

/**/ 
({ 
    "batchcomplete": "", 
    "query": { 
    "normalized": [{ 
     "from": "mouse", 
     "to": "Mouse" 
    }], 
    "pages": { 
     "18845": { 
     "pageid": 18845, 
     "ns": 0, 
     "title": "Mouse", 
     "extract": "<p>A <b>mouse</b> (plural: <b>mice</b>) is a small rodent characteristically having a pointed snout, small rounded ears, a body-length scaly tail and a high breeding rate. The best known mouse species is the common house mouse (<i>Mus musculus</i>). It is also a popular pet.</p>" 
     } 
    } 
    } 
}) 


$.getJSON("https://en.wikipedia.org/w/api.php?action=query&origin=*&format=json&exsentences=3&prop=extracts&titles=Main+Page&callback=&titles=mouse", function(apiReturn){ 
     var valueText = apiReturn.query.pages[18845].extract; 
     console.log(valueText); 
    }); 

答えて

0

これはJSONPではなく、JSONPです。それが動作しない理由は、クエリ文字列に空白のcallbackパラメータがあることです。 &callback=&titles=mouse&callback=?&titles=mousecallback=の後に?に書き留めてください)に変更すると、jQueryが正しく処理します。例えば:

$.getJSON("https://en.wikipedia.org/w/api.php?action=query&origin=*&format=json&exsentences=3&prop=extracts&titles=Main+Page&callback=?&titles=mouse", function(apiReturn){ 
// Only change is here ---------------------------------------------------------------------------------------------------------------^ 
    var valueText = apiReturn.query.pages[18845].extract; 
    console.log(valueText); 
}); 

より:http://api.jquery.com/jQuery.getJSONhttp://api.jquery.com/jQuery.ajax

+0

*(。?。溜息 '' "変更..." 文で、リフレッシュヒットあなたが表示されていない場合)* –

0

外部偽JSONを使用して、あなたのコードは、私のためにうまく動作するため、サーバーは、正しいJSONデータを取得していることを確認します。 jsonの応答に問題があるはずです。

var fakeJsonData = "https://jsonplaceholder.typicode.com/posts/1"; 
 

 
$.getJSON(fakeJsonData, function(apiReturn){ 
 
    
 
     var valueText = apiReturn.body; 
 
     console.log(valueText); 
 
    }); 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

追加してください: &コールバックを=? URLの最後に

コードは次のようになります。

$.getJSON("https://en.wikipedia.org/w/api.php?action=query&origin=*&format=json&exsentences=3&prop=extracts&titles=Main+Page&callback=&titles=mouse&callback=?", function(apiReturn) { 
     var valueText = apiReturn.query.pages[18845].extract; 
     console.log(valueText); 
    }) 
関連する問題