【发布时间】:2011-01-25 18:33:13
【问题描述】:
$.getJSON() 文档指出:
如果指定的 URL 在远程服务器上,则请求被视为 JSONP。有关详细信息,请参阅 $.ajax() 中对
jsonp数据类型的讨论。
jsonp 数据类型状态的$.ajax() 文档(重点是我的):
使用 JSONP 加载到 JSON 块中。 会增加一个额外的“?callback=?”到 URL 的末尾以指定回调。
所以看来,如果我用跨域 URL 调用 $.getJSON(),额外的“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,我特意将回调参数设置为“回调”,希望能很好地适应 jQuery 的使用。
谢谢!
(如果您有兴趣,请在 jQuery 论坛中编辑:我 cross-posted this。)
【问题讨论】: