这是基于此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格式,并且不确定它为什么不起作用。
答案 0 :(得分:0)
在jQuery.ajax中,您有一个名为 crossDomain 的设置。默认情况下为false以避免CORS,将其设置为true以启用带有ajax的CORS调用。
答案 1 :(得分:0)
找到答案,我不得不将网址调整为http://api.forismatic.com/api/1.0/?method=getQuote&lang=en&format=jsonp&jsonp=?
并且有效