【问题标题】:Retrieving JSON data from Wikipedia API using jQuery使用 jQuery 从 Wikipedia API 检索 JSON 数据
【发布时间】:2017-11-10 11:51:36
【问题描述】:

我已经尝试了在这里和 Wikimedia API 站点上可以找到的所有组合,但我似乎仍然无法返回任何数据。这是我的代码,

$('#go').click(function () {
    var str = $("#input").val();
    var fullstr = 'https://en.wikipedia.org/w/api.php?format=json&action=query&list=search&srnamespace=0&srsearch=' + str + '&srprop=snippet&format=json&callback=json';
    $.getJSON(fullstr, function(data) {
      alert(data);
    });
  });

在调用 getJSON 之前我已经对其进行了测试,并且它似乎可以正常工作,但我似乎没有从调用中得到任何东西。 (最后的 alert() 只是检查返回的任何对象)。

有什么问题?

谢谢!

【问题讨论】:

  • 如果您使用 Chrome 之类的工具进行调试 - 您是否检查过调试器中的“网络”选项卡以查看发送和返回的确切内容?
  • @F.Moss 我认为这是由于跨域标头问题
  • 谢谢,我会调查这些事情的。

标签: jquery json api wikimedia


【解决方案1】:

这可能对您有所帮助,在构建 URL 时您需要传递 origin= *

$(document).ready(function(){              
     $("#searchWiki").click(function(){
          var q = document.getElementById("searchid").value;
          $.getJSON("https://en.wikipedia.org/w/api.php?action=query&format=json&gsrlimit=15&generator=search&origin=*&gsrsearch=" + q, function(data){
     console.log(data)
     });
   });
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <div id="search">                    
         <input id="searchid" class="input-lg" name="gsrsearch" type="text" placeholder="search Wiki" autocomplete="off"/>
         <button id="searchWiki" class="btn-lg btn-info">Search</button>                          
    </div>      

【讨论】:

    【解决方案2】:

    您必须在请求中添加 origin=* 参数,以防止跨源错误。像这样的:

    https://en.wikipedia.org/w/api.php?action=query&list=search&srnamespace=0&srsearch=' + str + '&srprop=sn-p&format=json&callback=json&origin=*

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      相关资源
      最近更新 更多