Jquery &引用;XMLHttpRequest无法加载“;错误,尽管文件明显相同

Jquery &引用;XMLHttpRequest无法加载“;错误,尽管文件明显相同,jquery,xmlhttprequest,Jquery,Xmlhttprequest,好吧,这太疯狂了 我的一个朋友正在为我测试一个JavaScript/jQuery股票小部件。他用来测试它的HTML文件的内容再简单不过了。这是两条线: <script src="http://quandl.io/widgets/js/q.js"></script> <div name="quandl" data-values="msft revenue"></div> 对他来说,这会引发错误“[error]XMLHttpRequest无法加载

好吧,这太疯狂了

我的一个朋友正在为我测试一个JavaScript/jQuery股票小部件。他用来测试它的HTML文件的内容再简单不过了。这是两条线:

<script src="http://quandl.io/widgets/js/q.js"></script>
<div name="quandl" data-values="msft revenue"></div>

对他来说,这会引发错误“[error]XMLHttpRequest无法加载。访问控制允许源代码不允许源代码为null。”

他给我发了他的文件,我也收到了同样的错误。然而,奇怪的是,在TextWrangler(纯文本编辑应用程序)中,他的文件中的代码如下所示:

但是,如果我将该代码粘贴到新的TextWrangler文档中,代码如下所示:

得到这样的结果:如果我用与另一个文件完全相同的代码保存新文件,那么脚本执行就不会有问题。这两个文件都是从同一个位置(我的本地计算机)执行的。根据我可以检查的属性,这两个文件都是纯HTML文件(我看不到奇怪的样式信息)。至少可以说,这很奇怪


编辑1:这两个文件都位于运行Safari、OSX的本地计算机上。虽然我知道这不是StackOverflow的100%洁食,但这个问题可能是特定于文件的,所以我在这里发布了一篇文章。(但据我所知,它们都是扩展名为.html且内容相同的普通文本文件…这就是为什么这会让人如此困惑的原因)

我怀疑,尽管在这两种情况下,您都是从“本地机器”加载文件,在一种情况下,您可以通过双击文件资源管理器中的文件来获取
文件://
URL;在另一种情况下,您可以通过
http://
https://
URL从本地运行的web服务器进程打开文件


这很重要,因为许多浏览器(如Chrome)都不允许通过
文件://
URL加载页面的所有
XMLHttpRequest
调用,因为所有来源都是“交叉来源”,因此被同一来源策略拒绝。因此,如果您从
文件://
URL加载文件,XHR将失败,但是如果您通过
http://
https://
加载文件,它可能会工作。

您在这两种情况下都使用相同的浏览器吗?一些浏览器允许从
文件://
URL进行XHR,而其他浏览器(如Chrome)则不允许。@T.J.Crowder:是的。所有内容都是一样的。当脚本试图从通过
文件://
URL而不是通过web服务器和
http://
URL加载的页面执行Ajax调用时,通常会发生这种特定的Ajax错误。我相信您已经意识到,您所描述的情况……极不可能发生。所以在某个地方是有区别的。什么浏览器?你能创建一个吗?@jfriend00:这就是他说他正在做的。问题是为什么结果会不一致。它应该总是工作(某些浏览器)或总是失败(Chrome,等等)。我想我会删除这一点,因为你已经在问题的评论中清楚地说,你在这两种情况下都在使用
文件://
。我发现很难相信它能起作用,如果你使用的是同一个浏览器(你说过你是的),并且在一个案例中就出现了这个错误。