JQuery JSONP随机生成回调函数
JQuery JSONP randomly generated callback function
我正在使用JQuery来制作JSONP请求,并且文档非常令人困惑。
我有几个问题:
- 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);
}
JSONP调用总是异步的,这是正确的吗?所以async:false会被忽略吗?
是正确的
如果指定了jsonpCallback参数,则在检索数据时将执行此函数。但是紧接着,成功回调也会被执行。Jquery建议不要指定jsonpCallback函数(仅用于缓存?)这个函数与成功函数的关系是什么?
success函数是您的回调函数。Jquery通常生成一个随机的函数名。但是,如果您正在发出多个相同的请求,并且希望允许浏览器缓存调用,则可以指定该函数,这样就不会创建随机生成的函数。检查网络请求,你会看到(只要你的服务器设置支持它),如果你指定名称,你应该得到
304 - Not Modified
(编辑:在第一个之后的后续请求),而其他调用总是返回200 OK
如果没有指定jsonpCallback,将创建一个随机回调函数并附加到窗口对象。比如jQuery1360574548776335413_1776656584447,它的角色是什么?它是如何工作的?它和成功函数有关系吗?错误回调是否从未被调用?
回调函数应该包含您在success中放入的代码。如果实际请求有错误,例如无效的域名、401服务器响应等,则触发error事件。
相关文章:
- JavaScript回调函数
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- 如何正确地将参数传递给RequireJS回调函数
- 回调函数在python代码中离线
- 从AJAX回调函数中分离数据
- 赋值后的回调函数
- 如何在javascript回调函数中返回多个变量
- 函数表达式,返回回调函数
- 等待回调函数执行
- JavaScript回调函数和Google Feed API
- 如何从ajax成功回调函数中读取javascript变量
- 正在保存JavaScript内部回调函数中的值
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 如何在javascript中添加带有回调函数的按钮点击事件作为window.conf
- 在Golang回调函数中启用CORS
- 在初始函数完成之前调用回调函数
- jQuery Mobile:如何在$.Mobile.changePage之前运行回调函数
- 即使使用回调函数也无法返回值
- 为什么prototypjs观察到回调函数有绑定