The $.getJSON()文档指出:
如果指定的 URL 位于远程服务器上,则该请求将被视为 JSONP。请参阅 的讨论jsonp
$.ajax() 中的数据类型以获取更多详细信息。
The $.ajax()的文档jsonp
数据类型状态(强调我的):
使用 JSONP 加载到 JSON 块中。会额外添加一个“?callback=?”到 URL 末尾以指定回调.
所以看来如果我打电话$.getJSON()
对于跨域 URL,额外的“callback=?”参数应该自动添加。 (文档的其他部分支持这种解释。)
但是,我没有看到这种行为。如果我不添加“callback=?”明确地,jQuery 错误地生成了 XMLHttpRequest(它返回空数据,因为我无法跨域读取响应)。如果我明确添加它,jQuery 会正确发出
这是一个例子:
var URL = "http://www.geonames.org/postalCodeLookupJSON" +
"?postalcode=10504&country=US";
function alertResponse(data, status) {
alert("data: " + data + ", status: " + status);
}
$.getJSON(URL, alertResponse);
// alerts "data: null, status: success"
$.getJSON(URL + "&callback=?", alertResponse);
// alerts "data: [object Object], status: undefined"
发生什么了?我是否误解了文档或忘记了什么?
不用说,这不是什么大问题,但我正在创建一个 Web API,并且我特意将回调参数设置为“callback”,希望能够很好地适应 jQuery 的使用。
Thanks!
(编辑:我交叉发布了这个如果您有兴趣,请访问 jQuery 论坛。)
事实证明这是 jQuery 文档中的一个错误。看http://forum.jquery.com/topic/getjson-isn-t-automatically-appending-callback-to-my-cross-domain-url了解详情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)