我最近一直在玩API,而且还有一个我不知道如何弄清楚的错误。
以下是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调用未通过。我尝试调用不同的API(OpenWeatherMap API,着名的引用API等),它们工作得很好。它只是维基百科API不会返回结果。
更新:当我在API调用后添加下面的代码时,它会返回"错误。"
.done(function() {
console.log( "second success" );
})
.fail(function() {
console.log( "error" );
})
.always(function() {
console.log( "complete" );
});
答案 0 :(得分:-1)
运行代码时检查浏览器的开发者控制台。 您将看到此错误:
XMLHttpRequest无法加载https://en.wikipedia.org/w/api.php?format=json&action=query&generator=searc ...& pilimit = max& exintro& explaintext& exsentences = 1& exlimit = max& gsrsearch = mudit。请求的资源上没有“Access-Control-Allow-Origin”标头。
解决方案:使用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));
}
});
});