Javascript jQuery'背后的魔力是什么;s`$.getJSON`

Javascript jQuery'背后的魔力是什么;s`$.getJSON`,javascript,jquery,json,jsonp,Javascript,Jquery,Json,Jsonp,我正在尝试使用香草javascript从reddit获取json数据,我发现了一些令人困惑的问题。我在这里发现了这个问题 使用jQuery有一个非常可靠的解决方案 这是他们共享的JSFIDLE。我们可以看到$。getJSON正在工作 因此,我实现了自己的getJSON函数,如下所示: var getJSON = function(url, callback) { var xhr = new XMLHttpRequest(); xhr.open('GET', url,

我正在尝试使用香草javascript从reddit获取json数据,我发现了一些令人困惑的问题。我在这里发现了这个问题 使用jQuery有一个非常可靠的解决方案

这是他们共享的JSFIDLE。我们可以看到
$。getJSON
正在工作

因此,我实现了自己的
getJSON
函数,如下所示:

  var getJSON = function(url, callback) {
      var xhr = new XMLHttpRequest();
      xhr.open('GET', url, true);
      xhr.responseType = 'json';
      xhr.onload = function() {
        var status = xhr.status;
        if (status === 200) {
          callback(null, xhr.response);
        } else {
          callback(status, xhr.response);
        }
      };
      xhr.send();
  };
  // let url = 'http://query.yahooapis.com/v1/public/yql?q=select%20%2a%20from%20yahoo.finance.quotes%20WHERE%20symbol%3D%27WRC%27&format=json&diagnostics=true&env=store://datatables.org/alltableswithkeys&callback';
  // let url = 'https://www.reddit.com/r/CryptoCurrency/.json?jsonp=?';
  let url = 'http://www.reddit.com/r/pics/.json?jsonp=?';
  getJSON(url , function(err, data) {
    if (err !== null) {
      console.log('Something went wrong: ' + err);
    } else {
      // console.log('Your query count: ' + data.query.count);
      console.log('Your query count: \n');
      console.log(data.query);
    }
  });
您可以在代码中看到我尝试了几个测试URL。Yahooapi.com运行良好,reddit没有。我认为这与
jsonp
有关。这里是我设置的一个JSFIDLE,用来证明我的代码不起作用。这里抛出了一个错误,请求必须通过https发送,而在另一个JSFIDLE中则不是这样


有人知道如何用纯javascript处理这个问题吗?

看起来您可以忽略JSONP问题,只需省略该查询参数即可。对于RedditAPI,它本身似乎工作得很好,并返回纯的、正常的JSON


如果您想使用JSONP,请查看使用纯Javascript和XHR的方法。

JSONP,自2005年以来网络上有很多示例。在Cool添加一个工作副本非常有用。除非他们设置CORs,否则您需要使用JSONP。。。。