我目前正在为 Chrome 开发用户脚本/扩展,并试图从“某个网站”中提取一些 JSON 数据。这是我的方法:
$.get( "http://cloud.hartwig-at.de/~oliver/superuser.json",
function( data ) { console.log( data ); }
);
当然,这会导致以下错误:
XMLHttpRequest 无法加载http://cloud.hartwig-at.de/~oliver/superuser.json。Access-Control-Allow-Origin 不允许来源http://superuser.com 。
在阅读Origin 'url' is not allowed by Access-Control-Allow-Origin之后,我能够解决这个问题(以及其他问题)。所以,这是下一个版本:
$.get( "http://cloud.hartwig-at.de/~oliver/superuser.json",
function( data ) { console.log( data ); },
"jsonp"
);
可悲的是,这会导致另一个错误:
Uncaught SyntaxError: Unexpected token : (superuser.json:2)
还有一个警告告诉我“资源解释为脚本,但使用 MIME 类型文本/纯文本传输:”这已经让我知道问题可能出在哪里。(通过Chrome 提供了更多详细信息,说“资源解释为脚本,但使用 MIME 类型文本/纯文本传输。”,给出了什么?)
显然,HTTP 服务器必须为我的文件发送正确的 MIME 类型,即application/json
.
好的,所以我很快将所需的更改添加到我的mime.types
,然后再去一次。但是,没有骰子!警告消失了,错误没有。我还是明白了Uncaught SyntaxError: Unexpected token :
。(我之前也尝试过使用mimeType
参数来解决这个问题,结果是一样的。)
MIME 类型看起来不错:
现在我有点没有想法了。该文件的内容在http://www.jslint.com/.json
上验证良好