为什么我的API请求不起作用?

时间:2018-04-22 20:49:32

标签: javascript json api

我试图通过维基百科json API获取特定主题的信息,但是,当我点击按钮时,没有任何反应。控制台不会报告任何问题。它与 CORS 问题有关吗?

function buttonClick() {
let request = new XMLHttpRequest(),
    url = "https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=cream&&callback=?";

  request.open("GET", url, false);
  request.onload = function() {
    let data = JSON.parse(this.response);

    document.write(data);
 };
 request.send;
};

1 个答案:

答案 0 :(得分:3)

尝试使用Fetch API,它更“现代”,并且对Promises有更好的支持。 https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

要向维基百科提出cors请求,请在查询中添加origin=*并从中删除callback=?部分。

let url = 'https://en.wikipedia.org/w/api.php?origin=*&format=json&action=query&generator=search&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=cream';

fetch(url).then(v => v.json()).then(v => console.log(v));