2017-01-31 1 views
1

私はWikipedia Viewerを開発しており、Wikipedia APIからいくつかのデータを抽出しようとしています。これは通常のリクエスト、つまりこのメソッドが何の応答も出さない理由であると考えられていますか?私はフェッチライブラリを使用しています。 console.log(data)行はまったく実行されません。Wikipedia APIのためのフェッチライブラリの使用 - Javascript

function getArticleList() { 
    var searchFor = ""; 
    searchFor = document.getElementById('intext').value; 
    console.log(searchFor); 
    fetch("https://en.wikipedia.org/w/api.php?action=opensearch&search=" + searchFor + "&limit=5").then(function(resp) { 
     console.log("trySearch"); 
     return resp.json() 
    }).then(function(data) { 
     console.log(data); 
     document.querySelector.artName.innerText = data.object[1]; 
     document.querySelector.textArt.innerText = data.object[0]; 
     document.querySelector.href = data.object[2] 
    }) 
}; 
+0

コンソールにエラーがありますか? "trySearch"ログは正常にログに記録されますか? 'document.querySelector ....'行は確実に失敗します。 –

+0

Mike、 "trySearch"はログに記録されません。ケースは何らかの理由でフェッチが失敗していることです。私はあなたが言及している線はうまくいかないことを知っている、彼らは私がしようとしているものをilustrateするだけです。ありがとうございました。 –

+0

ちなみに、上記のコードでは、「フェッチライブラリ」を使用していません。代わりに、ネイティブの[Fetch API](https://fetch.spec.whatwg.org/#fetch-api)を使用しています。これは[ MDNでフェッチ記事を使用する](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) – sideshowbarker

答えて

-2

フェッチライブラリを使用する特別な理由はありますか?これは、単純なJQuery AJAXを使用して行うことができます。

function getArticleList() { 

var searchFor = document.getElementById('intext').value; 
var response=""; 
console.log(searchFor); 
$.ajax({ 
    url: "https://en.wikipedia.org/w/api.php?action=opensearch&search="+searchFor+"&limit=5", 
    dataType: 'jsonp', 
    success: function(data){  
     console.log(data); 
     response=data; 
    } 
}).done(function(response) { 
     console.log(response); 
     document.querySelector.artName.innerText = response.object[1]; 
     document.querySelector.textArt.innerText = response.object[0]; 
     document.querySelector.href = response.object[2]; 
    }); 

}

+0

Aaronからの回答が正しいはずです..あなたはorigin =リクエストURLへの*クエリパラメタ。 jQueryは単純なフェッチモジュールよりも大きく、彼はdocument.getElementByIdを使用しているので、彼は明らかにjQueryを使用していません。 –

+0

OPは特にjQueryを使用しないように頼んだ。また、この種のアプリケーションに不必要な重量を追加します。 – twhite96

3

ウィキメディア・コモンズdocumentation: '匿名リクエストの場合、origin query stringパラメータを*に設定すると、どこからでもリクエストを許可できます。'

私のために働い以下:私は「ベルギー」で自分の検索で満たされた、しかし、あなたのコードは、右の修正で動作するはず

fetch("https://en.wikipedia.org/w/api.php?&origin=*&action=opensearch&search=Belgium&limit=5").then(function(resp) { 
    console.log(resp); 
    return resp.json() 
}).then(function(data) { 
    console.log(data); 

注意してください。

+0

-2はこの回答の最初のバージョンに由来します。適切に編集されています。 – aaron

関連する問題