gpt4 book ai didi

javascript - 在 jQuery + Datatables 中设置 `processData: false` 会将未知内容附加到我的 Ajax 调用的 URL

转载 作者:行者123 更新时间:2023-11-29 10:34:25 26 4
gpt4 key购买 nike

在下面 this post ,我想将我所有的 Ajax 请求自动转换为 JSON,并且一直运行良好。

但是,我注意到有时 jQuery 会在 URL 末尾的反缓存参数 (_=1472476048876 例如),因为我还设置了 cache: false

当我将 processData 更改为 true 时,神秘的部分就消失了。任何人有任何想法为什么?我正在使用 jQuery 2.1.4

编辑:我注意到只有当我通过 Datatables .load() API 进行 Ajax 调用时才会产生错误。还有其他人遇到过这个问题吗?

编辑 2:为了回应 @war10ck 的出色回答,澄清一下,我正在发出 GET 请求,但我没有发送任何数据。我手动创建了 URL,因此我认为 Datatables 正在向我的请求添加一些数据(甚至可能是一个空对象),这些数据正在变成 [object%20Object]

最佳答案

我想我找到了问题的根源。在 Datatables 的内部深处,在一个名为 _fnBuildAjax 的函数中,即使您没有提供任何东西作为 data 参数,也有两行执行以下操作:

var tmp = {};
// ...if data is empty...
data = tmp;

这最终会将一个空对象传递给靠近同一函数底部的 jQuery ajax 调用。通常 jQuery 会采用这个空对象而不更改调用,但由于 processDatafalse,jQuery 将它附加到 URL(毕竟是 GET 请求)并将其转换进入 [object%20Object],即使它是一个空对象。这只发生在 Datatables 上,因为在我的代码的其他地方,我只是简单地没有为 Ajax 调用指定 data 参数,而 jQuery 足够聪明,不会将任何内容附加到 URL,但是当它看到一个空的object 它不知道该怎么做并按原样附加它。我希望这有助于 future 的程序员调试这种边缘情况 :)。再次感谢@war10ck 的解释。

关于javascript - 在 jQuery + Datatables 中设置 `processData: false` 会将未知内容附加到我的 Ajax 调用的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39207203/

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