2017-07-16 33 views
0

爲什麼維基百科ajax調用不工作

var url = 'http://en.wikipedia.org/w/api.php?action=opensearch&format=json&limit=15&search=' + search; 
 
var ourRequest = new XMLHttpRequest(); 
 

 
ourRequest.open('GET', url); 
 

 
ourRequest.onload = function() { 
 
    var data = JSON.parse(ourRequest.responseText); 
 
    console.log(data); 
 
}; 
 
ourRequest.send();

誰能告訴我爲什麼我不能在我的控制檯得到解析數據。

+0

你錯過了'ourRequest.send();'之前的onload。 –

+1

[打開DevTools並查找錯誤](https://developer.chrome.com/devtools)。這可能是一個CORS錯誤。 –

+1

所以你的意思是ourRequest.send();應該在ourRequest.open('GET',url)之後; –

回答

0

你需要一個參數添加到您的網址變量提出這個要求的工作 - 起源= *。添加它,你的代碼會很好。

檢查我如何更改url變量。維基百科API需要包含在參數字符串中的請求源。

document.getElementById('do-search').addEventListener('click', search); 
 

 
function search(){ 
 
    var search = document.getElementById('search').value; 
 
    var url='http://en.wikipedia.org/w/api.php?action=opensearch&format=json&limit=15&origin=*&search='+search; 
 
    var ourRequest = new XMLHttpRequest(); 
 

 
    ourRequest.open('GET', url); 
 

 
    ourRequest.onload = function() { 
 
    var data = JSON.parse(ourRequest.responseText); 
 
    document.getElementById('results').innerHTML = data; 
 
    }; 
 
    ourRequest.send(); 
 
}
<input id="search" type="text"> 
 

 
<button id="do-search">Search</button> 
 

 
<div id="results"></div>

0

嗯,我使它與下面的代碼一起工作。

$.ajax({ 
url: url, 
jsonp: "callback", 
dataType: "jsonp", 
success: function(data) { 
    console.log(data); 
} 
});