据记录,据我所知,您有两个问题:
您没有向您传递“ jsonp”类型说明符
$.get
,因此它使用的是普通的XMLHttpRequest。但是,您的浏览器支持CORS(跨域资源共享),如果服务器确定,则允许跨域XMLHttpRequest。那是Access-Control-Allow-Origin
头文件进入的地方。我相信您提到您是通过file:// URL运行它的。CORS标头有两种方式来表示跨域XHR正常。一种是发送
Access-Control-Allow-Origin: *
(如果您通过到达Flickr$.get
,他们一定在发送),另一种是回显Origin
标头的内容。但是,file://
URL产生的nullOrigin
不能通过回显进行授权。
达林的使用建议以一种round回的方式解决了第一个问题
$.getJSON。如果看到
callback=?URL中的子字符串,将请求类型从其默认值“
json”更改为“ jsonp”确实有点魔术。
通过不再尝试从
file://URL 执行CORS请求,解决了第二个问题。
为了向其他人说明,以下是简单的故障排除说明:
- 如果您尝试使用JSONP,请确保符合以下条件之一:
- 您正在使用
$.get
并将其设置dataType
为jsonp
。 - 您正在使用
$.getJSON
并包含callback=?
在URL中。
- 您正在使用
- 如果您尝试通过CORS执行跨域XMLHttpRequest …
- 确保您通过进行测试
http://
。通过运行的脚本file://
对CORS的支持有限。 - 确保浏览器实际上支持CORS。(Opera和Internet Explorer迟到了)
- 确保您通过进行测试



