我无法理解 jQuery.ajax 的文档,特别是两个选项:jsonp
和jsonpCallback
,所以有人可以这么愉快地解释吗?
我所理解的是,这jsonp
是服务器期望的 GET 参数的名称(通常是“回调”),并且jsonpCallback
是包装响应的函数的名称。看起来很简单。
但是jQuery.ajax 文档中的解释使这有点复杂。我想在这里引用选项的完整文本,并用粗体jsonp
标记对我来说模糊的内容:
jsonp
覆盖 jsonp 请求中的回调函数名称。在“callback=?”中将使用该值代替“callback ” url 中查询字符串的一部分。所以 {jsonp:'onJSONPLoad'} 会导致 'onJSONPLoad=?' 传递给服务器。从 jQuery 1.5 开始,将 jsonp 选项设置为 false 会阻止 jQuery 将“?callback”字符串添加到 URL 或尝试使用“=?”。为转型。在这种情况下,您还应该明确设置 jsonpCallback设置。例如,{ jsonp: false, jsonpCallback: "callbackName" }
所以问题是:
1.“=”是什么意思?或“回调=?” (额外的问号)?当我执行 JSONP AJAX 请求时,如下所示:
$.ajax('http://fake.com',{
dataType: 'jsonp',
success: function(data) {console.log(data);}
});
URL 看起来是这样的,没有这样的问号:
http://fake.com/?callback=jQuery18104830878316494931_1352981996209&_=1352981999411
2.什么是额外参数(下划线)_=1352981999411
?
3.这些词是什么In this case, you should also explicitly set the jsonpCallback setting
意思?我看不到任何相互关系。如果我设置{ jsonp: false, jsonpCallback: "callbackName" }
,如文档中所述,查询将如下所示:
http://fake.com/?_=1352981999411
根本没有使用“callbackName”,为什么要指定它?
我的赞赏。