gpt4 book ai didi

jquery - 在 AJAX 请求中传递 null,Rails 将其解释为 "null"

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

我正在尝试通过 $.ajax 发送 AJAX 请求到 Rails 3 后端,我陷入了一种奇怪的行为。以以下请求为例:

$.ajax({
url: $(this).attr('href'),
type: 'PUT',
dataType: "json",
data: {a: null},
success: function (data) {
console.log("success!")
}
});

我将其绑定(bind)到点击事件。简单的。发生的情况是,Rack 将 URI 编码的表单参数解析为 {"a"=> "null"} 而我真的希望解析为 {"a"=> nil}。有没有任何非黑客的方式来实现这种行为?

非常感谢!

附注如果我传递 {a: undefined} ,则 params hash 根本没有 a 键。

最佳答案

好的,我找到了解决方案。我必须将 $.ajax 调用更改为:

$.ajax({
url: $(this).attr('href'),
type: 'PUT',
dataType: "json",
contentType: "application/json",
data: JSON.stringify({a: null}),
processData: false,
success: function (msg) {
console.log("success!")
}
});

它做了两件重要的事情。首先,它将内容类型 header 传递给 JSON,以便 Rack 自动将请求负载解析为 JSON。另一个是 processData 必须设置为 false 以防止默认的 jQuery 行为:

By default, data passed in to the data option as an object (technically, anything other than a string) will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded".

关于jquery - 在 AJAX 请求中传递 null,Rails 将其解释为 "null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13510390/

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