javascript - 维基百科 API XMLHttpRequest 无法加载

标签 javascript json ajax api

我知道此错误之前已发布在该网站上,并且我已经能够解决该错误,但我正在寻找有关我实际所做的事情的一些解释。

作为一个学习项目,我正在创建一个维基百科查看器,我尝试做的第一件事就是调用维基百科 API:

$(document).ready(function() {

  var wiki = "https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json"

  $.getJSON(wiki, function(d) {
    console.log(d);
  });

});

这将返回错误 XMLHttpRequest cannot load https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://conn3cted.uk.tn' is therefore not allowed access.

我可以通过添加 &callback=? 来阻止此错误的出现。到 GET 请求的末尾 ( https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json&callback=? )

但我不完全明白什么是callback=?正在做什么,这会阻止它出错?

编辑:这与链接的问题不同,因为我没有询问 JSONP(我不认为?),并且问题集中在使用 <script> 上。标签,而我问为什么添加 callback=?做了这个工作。

最佳答案

callback=? URL 末尾会导致 jQuery 生成 <script>元素并发出 JSONP 请求,而不是使用 XMLHttpRequest。

this question 的答复解释 JSONP 如何绕过同源策略。

关于javascript - 维基百科 API XMLHttpRequest 无法加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37027750/

相关文章:

javascript - 如何修复 Slimmenu 多级子项超出屏幕的问题

java - 在表单提交时触发页面加载微调器

android - 如何使用未命名数组从 URL 解析 JSON

javascript - bacon.js EventStream 表示每隔一段时间轮询 url

javascript - 如何模拟/测试 AJAX 异常处理程序?

Javascript 将 tr 追加到表中

javascript - 使用 AJAX 的 MySQL 搜索框

c# - 如何直接从文件反序列化 json 数据集?

javascript - Java 属性文件到 JSON

php - 如何使用 AJAX 和 JSON 发送和接收