javascript - 为什么 .getjson 不起作用但 .ajax 起作用?

标签 javascript html json ajax

我正在研究 Free Code Camp 的 wiki 查看器,并试图找出 api 调用。我认为 getjson 和 ajax 是等效的,但也许我做错了什么。

所以一开始我使用了这个 getjson 代码:

$.getJSON('http://en.wikipedia.org/w/api.php?action=query&list=search&format=json&srsearch=' + search, 
function(api){
    console.log(api);
}, 'jsonp');

但它返回了此错误:请求的资源上不存在“Access-Control-Allow-Origin” header 。因此,不允许访问源“null”。

然后我使用具有相同网址的ajax:

$.ajax({
      url: 'http://en.wikipedia.org/w/api.php?action=query&list=search&format=json&srsearch=' + search,
      dataType: 'jsonp',
      success: getWiki //just console logs the api
            });

这似乎返回了 api 调用。谁能解释一下为什么 getjson 不起作用而 ajax 起作用?

最佳答案

您缺少强制 $.getJSON 执行 JSONP 请求所需的 callback=? 查询参数

$.getJSON('http://en.wikipedia.org/w/api.php?callback=?', {
  action: 'query',
  list: 'search',
  format: 'json',
  srsearch: search
}, api => {
  // response handler
})

参见http://api.jquery.com/jquery.getjson/#jsonp

关于javascript - 为什么 .getjson 不起作用但 .ajax 起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42708007/

相关文章:

javascript - Python - 从服务器获取数据(ajax) - 'str'对象不可调用错误

javascript - 为什么添加新 block 后折叠/展开不起作用?

javascript - HTML 表单 : Send an additional notification email via jQuery and PHP mail

javascript - 循环遍历对象数组 - 第一次迭代后数组已完全加载

JavaScript - 从加载多个链接的 For 循环调用 'onClick' 函数

c# - LINQ 查询输出 JSON 中的组和子组

javascript - AngularJS 无限滚动,不只适用于 chrome 全屏

javascript - 是否可以在设置超时的情况下延迟 for 循环中的变量?

javascript - 当向下滚动页面时出现和消失元素

javascript - 当加载网页调整为在加载时将 url 框隐藏在 androids 上时,它叫什么