【发布时间】:2013-04-29 18:43:17
【问题描述】:
我正在使用 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在幕后的实际工作方式,可能会有所帮助。 en.wikipedia.org/wiki/JSONP -
谢谢,是的,我已经阅读了几篇关于它的文档。我发现 JQuery API 非常难以理解。尤其是随机生成的回调
-
这里是一个简单的手工JSONP函数,它可能会让你更好地理解。 jsfiddle.net/Axema 您还应该查看在浏览器中发出的请求,这样您就可以准确地看到响应的样子。它基本上只是一个正在运行的脚本。
-
我知道,谢谢 :) 我非常了解 JSONP 的工作原理、研究和实验。我没有完全理解 jQuery JSONP 参数和行为。
标签: javascript jquery dom callback jsonp