该$.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"
Run Code Online (Sandbox Code Playgroud)
发生什么了?我误解了文档还是遗忘了什么?
不言而喻,这不是一个大问题,但我正在创建一个Web API,我故意将回调参数设置为"回调",希望能很好地适应jQuery的使用.
谢谢!
(编辑:如果你有兴趣,我会在jQuery论坛中交叉发布.)
试试这个:
var URL = "http://www.geonames.org/postalCodeLookupJSON" +
"?postalcode=10504&country=US";
function alertResponse(data, status) {
alert("data: " + data + ", status: " + status);
}
$.ajax({
url: URL,
dataType: 'jsonp',
jsonpCallback: 'alertResponse',
});
Run Code Online (Sandbox Code Playgroud)
原来这是jQuery文档中的一个错误.有关详细信息,请参阅http://forum.jquery.com/topic/getjson-isn-t-automatically-appending-callback-to-my-cross-domain-url.
| 归档时间: |
|
| 查看次数: |
19165 次 |
| 最近记录: |