jQuery $ .getJSON方法仍然给出了CORS错误

时间:2016-12-20 12:35:14

标签: javascript jquery json ajax

这是基于此question

的代码
$(document).ready(function(){
  $('#new-quote').click(function(){
    var url = 'http://api.forismatic.com/api/1.0/?format=jsonp&jsonp=_';
    $.getJSON(url, function(data){
      console.log(data);
    });
  });
});

这就是错误:

  

XMLHttpRequest无法加载http://api.forismatic.com/api/1.0/?format=jsonp&jsonp= 。 CORS策略已阻止从“http://api.forismatic.com/api/1.0/?format=jsonp&jsonp= ”重定向到“http://forismatic.com/”:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:8080”访问。

我也试过了代码:

$(document).ready(function(){
  $('#new-quote').click(function(){
    var url = 'http://api.forismatic.com/api/1.0/?format=jsonp&jsonp=_';
    $.getJSON(url).done(update).fail(err);
    function update(response){
      console.log(response);
    }
    function err(jqxhr, textStatus, err){
      console.log('Request failed');
    }  
  });
});

它给了我同样的错误。连同'请求失败的消息'。我正在使用jQuery 3.1.1。我在这里错过了什么?很抱歉,如果这是重复但我在这里阅读了问题并且没有找到答案

question询问了Access-Control-Allow-Origin的基本概念。这家伙也确实表示他不想使用jsonp。我想使用带有$ .getJSON格式的jsonp格式,并且不确定它为什么不起作用。

2 个答案:

答案 0 :(得分:0)

在jQuery.ajax中,您有一个名为 crossDomain 的设置。默认情况下为false以避免CORS,将其设置为true以启用带有ajax的CORS调用。

更多信息 http://api.jquery.com/jquery.ajax/

答案 1 :(得分:0)

找到答案,我不得不将网址调整为http://api.forismatic.com/api/1.0/?method=getQuote&lang=en&format=jsonp&jsonp=?并且有效