维基百科 API 调用未返回结果
Wikipedia API call is not returning results
我最近一直在玩 APIs,有一个错误我还不知道如何解决。
这是 JavaScript 部分:
var userInput = "";
$("#searchButton").click(function() {
// get user input
var userInput = $("#userInput").val();
// clear input
$('#userInput').val("");
var api = "https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=";
alert(api + userInput);
$.getJSON(api + userInput, function(wikiData) {
alert("SUCCEEDED");
});
});
基本上,当用户输入内容并点击搜索按钮时,警报 ("SUCCEEDED") 不会出现,这意味着 API 调用没有通过。我尝试调用不同的 APIs(OpenWeatherMap API、名言 API 等),它们工作得很好。只是维基百科 API 没有 return 结果。
更新:当我在 API 调用后添加下面的代码时,它 returns "error."
.done(function() {
console.log( "second success" );
})
.fail(function() {
console.log( "error" );
})
.always(function() {
console.log( "complete" );
});
在 运行 编写代码的同时检查浏览器的开发人员控制台。
您将看到此错误:
XMLHttpRequest cannot load https://en.wikipedia.org/w/api.php?format=json&action=query&generator=searc…&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=mudit. No 'Access-Control-Allow-Origin' header is present on the requested resource.
解决方案:使用jsonp
。这是一个例子:
$("#searchButton").click(function() {
console.log('click');
var api = "https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=mudit";
$.ajax({
type: 'GET',
url: api,
async: false,
contentType: "application/json",
dataType: 'jsonp',
success: function(data){
console.log(JSON.stringify(data));
}
});
});
我最近一直在玩 APIs,有一个错误我还不知道如何解决。
这是 JavaScript 部分:
var userInput = "";
$("#searchButton").click(function() {
// get user input
var userInput = $("#userInput").val();
// clear input
$('#userInput').val("");
var api = "https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=";
alert(api + userInput);
$.getJSON(api + userInput, function(wikiData) {
alert("SUCCEEDED");
});
});
基本上,当用户输入内容并点击搜索按钮时,警报 ("SUCCEEDED") 不会出现,这意味着 API 调用没有通过。我尝试调用不同的 APIs(OpenWeatherMap API、名言 API 等),它们工作得很好。只是维基百科 API 没有 return 结果。
更新:当我在 API 调用后添加下面的代码时,它 returns "error."
.done(function() {
console.log( "second success" );
})
.fail(function() {
console.log( "error" );
})
.always(function() {
console.log( "complete" );
});
在 运行 编写代码的同时检查浏览器的开发人员控制台。 您将看到此错误:
XMLHttpRequest cannot load https://en.wikipedia.org/w/api.php?format=json&action=query&generator=searc…&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=mudit. No 'Access-Control-Allow-Origin' header is present on the requested resource.
解决方案:使用jsonp
。这是一个例子:
$("#searchButton").click(function() {
console.log('click');
var api = "https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=mudit";
$.ajax({
type: 'GET',
url: api,
async: false,
contentType: "application/json",
dataType: 'jsonp',
success: function(data){
console.log(JSON.stringify(data));
}
});
});