我正在使用JQuery来发出JSONP请求,文档很混乱。
我有几个问题:
async:false
会被忽略吗?jsonpCallback
参数,则在检索数据时将执行此功能。但是之后,success
回调也会被执行。 Jquery建议不要指定jsonpCallback
函数(仅适用于缓存?)。这个函数与success
函数有什么关系?jsonpCallback
,将创建随机回调函数并将其附加到window
对象。像jQuery1360574548776335413_1776656584447
这样的东西,它的作用是什么?它是如何工作的?它与success
函数有什么关系吗?error
回调吗?这是我的代码:
(function($) {
var url = "https://www.googleapis.com/books/v1/volumes/zyTCAlFPjgYC";
$.ajax({
type: 'GET',
url: url,
// JSONP always async?
async: false,
jsonp: "callback",
jsonpCallback: 'jsonCallback',
contentType: "application/json",
dataType: 'jsonp',
success: function(json) {
console.dir(json);
},
// Error never called?
error: function(e) {
console.log(e.message);
}
});
})(jQuery);
function jsonCallback(json) {
$(".test").html(json.volumeInfo.title);
}
答案 0 :(得分:1)
JSONP调用始终是异步的,这是正确的吗?那么async:false会被忽略吗?
这是正确的
如果指定了jsonpCallback参数,则在检索数据时将执行此函数。但是,紧接着,也将执行成功回调。 Jquery建议不要指定jsonpCallback函数(仅用于缓存?)。这个函数与成功函数有什么关系?
成功功能就是你的回调。 Jquery通常会生成一个随机函数名。但是,如果您正在进行多个相同的请求,而是希望允许浏览器缓存调用,则可以指定该函数,以便不创建随机生成的函数。检查网络请求,您将看到(只要您的服务器已设置为支持它),如果您指定了名称,则应该
304 - Not Modified
(编辑:在第一个之后的后续请求中),而其他请求通话总是返回200 OK
如果未指定jsonpCallback,将创建随机回调函数并将其附加到窗口对象。像jQuery1360574548776335413_1776656584447这样的东西,它的作用是什么?它是如何工作的?它与成功函数有什么关系吗? 是否从未调用错误回调?
该回调函数应该包含您成功的代码。如果实际请求出现错误,则会触发错误事件,例如无效的域名,401服务器响应等。