Wikipedia API调用未返回结果

时间:2016-06-22 03:40:15

标签: javascript json api getjson wikipedia-api

我最近一直在玩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" );
  });

1 个答案:

答案 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));
        }
    });
});