gpt4 book ai didi

jquery - 请解释一下 jQuery 中的 JSONP

转载 作者:行者123 更新时间:2023-12-01 00:57:22 24 4
gpt4 key购买 nike

我无法理解 jQuery.ajax 的文档,特别是两个选项:jsonpjsonpCallback,所以有人可以愉快地解释一下吗?

我所理解的是,jsonp是服务器期望的GET参数的名称(通常是“回调”),而jsonpCallback是要包装的函数的名称一个回应。看起来很简单。

但是jQuery.ajax doc处的解释让这有点复杂。我想在此处引用 jsonp 选项的完整文本,并用粗体标记对我来说模糊的内容:

jsonp

Override the callback function name in a jsonp request. This value will be used instead of 'callback' in the 'callback=?' part of the query string in the url. So {jsonp:'onJSONPLoad'} would result in 'onJSONPLoad=?' passed to the server. As of jQuery 1.5, setting the jsonp option to false prevents jQuery from adding the "?callback" string to the URL or attempting to use "=?" for transformation. In this case, you should also explicitly set the jsonpCallback setting. For example, { jsonp: false, jsonpCallback: "callbackName" }

所以问题是:

1."=?"'callback=?'(额外问号)是什么意思?当我执行如下所示的 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.在这种情况下,您还应该显式设置 jsonpCallback 设置是什么意思?我看不出任何相互关系。如果我设置 { jsonp: false, jsonpCallback: "callbackName"},正如文档中所述,查询将如下所示:

http://fake.com/?_=1352981999411

根本没有使用“callbackName”,为什么要指定它?

我的感激之情。

最佳答案

回调名称是可选的,如果您不提供,它将使用默认名称。因此,如果您省略 onJsonLoad 您只会得到 callback

发生的情况是 JSON 被一个函数包装,因为 JSONP 通过 <script> 标签工作,所以你的正常 JSON:

{prop: value}

变成:

callback({prop: value});

加载脚本标签后,jQuery 可以调用此函数并获取 JSON 数据。

_=123456788 只是一个用于停止缓存请求的 Date.getTime()

关于jquery - 请解释一下 jQuery 中的 JSONP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13397751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com