问题是您遇到了Same Origin
Policy,该策略适用于所有“实际”
ajax调用(实际使用的调用
XMLHttpRequest)。
IE可以运行,但Firefox和Chrome不能运行的原因很简单:当源是本地文件且您要检索的资源在网络上时,IE不会应用SOP。另一方面,Chrome和Firefox应用了W3C
的跨域资源共享标准,因此包含了相关的“这是我的来历,您可以和我谈谈吗?”
标头-w3schools说“不,我不会和你说话。” (“
null”是本地计算机的“原始”值。)选择浏览器的乐趣在于,它们可以对类似的事情做出不同的设计决策。
您发现有效的代码并未执行真正的ajax调用,而是执行了JSON-P,它根本没有使用
XMLHttpRequest,因此绕过了SOP,但仅用于
GET操作(不支持
POST),并且仅当另一端支持它时。(jQuery的
get函数既可以执行实际的ajax调用,也可以执行JSON-P,其作用的关键是
dataType参数,在您显示的示例中为“
jsonp”。)
您可能会发现本文很有用。它描述了使用YQL(来自Yahoo的HTML抓取服务)作为跨域代理,因为YQL支持JSON-P。



