好的,我正在尝试使用以下jQuery代码从URL获取JSON文件。
$.ajax({
url: 'http://example.com/example.json',
dataType: 'json',
type: 'GET',
async: true,
cache: true,
crossDomain: true
});
然而,当请求触发时,Firebug会提示发生了一个错误,但不告诉我是什么错误。
我可以在浏览器中轻松访问URL,并且JSON是完全有效的(根据http://www.freeformatter.com/json-validator.html)。
有什么建议吗?
编辑:
好的,将contentType
更改为jsonp
已经让我更进一步了。我的JSON看起来像这样(http://pastebin.com/hSAP30zv),但是Firebug正在说:
SyntaxError: invalid label
"item" : {
^
还有其他建议吗?
crossDomain
?如果你想使用 JSONP,你需要发出一个 JSONP 响应而不是 JSON。如果你使用 CORS,你应该传递xhrFields: { withCredentials: true }
(http://api.jquery.com/jQuery.ajax/)。 - MattdataType: 'json'
和crossDomain: true
是否能很好地配合使用。只有在您想要在相同的域上强制执行跨域行为时,才需要使用crossDomain: true
。因此,我假设您实际上确实发出了一个返回JSON的跨域请求。这将无法正常工作,除非服务器支持CORS。或者它必须返回JSONP,并且您必须告诉jQuery使用dataType: 'jsonp'
来期望JSONP。 - Felix Kling