该$.getJSON()
文档指出:
如果指定的 URL 在远程服务器上,则请求被视为 JSONP。
jsonp
有关详细信息,请参阅$.ajax() 中对数据类型的讨论。
数据类型状态的$.ajax()
文档jsonp
(强调我的):
使用 JSONP 加载 JSON 块。将添加一个额外的“?callback =?” 到您的 URL 的末尾以指定回调。
所以看来,如果我$.getJSON()
用跨域 URL 调用,额外的“callback=?” 参数应自动添加。(文档的其他部分支持这种解释。)
但是,我没有看到这种行为。如果我不添加“回调=?” 明确地,jQuery 错误地生成了一个 XMLHttpRequest(它返回空数据,因为我无法跨域读取响应)。如果我明确添加它,jQuery 会正确地发出 <script> 请求。
这是一个例子:
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,并且我特意将回调参数设置为“回调”,希望能很好地适应 jQuery 的使用。
谢谢!
(编辑:如果您有兴趣,我会在 jQuery 论坛中交叉发布此内容。)