Ger*_*rry 3 ajax jquery ruby-on-rails ruby-on-rails-3
我试图通过$ .ajax向一个Rails 3后端发送一个AJAX请求,我坚持一个奇怪的行为.以下面的请求为例:
$.ajax({
url: $(this).attr('href'),
type: 'PUT',
dataType: "json",
data: {a: null},
success: function (data) {
console.log("success!")
}
});
Run Code Online (Sandbox Code Playgroud)
我绑定到点击事件.简单.发生了什么,Rack解析URI编码的表单参数{"a" => "null"}
,我真的想解析为{"a" => nil}
.是否有任何非hackish方式来实现这种行为?
非常感谢!
PS如果我通过,{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!")
}
});
Run Code Online (Sandbox Code Playgroud)
这做了两件重要的事情.首先,它将内容类型标头传递给JSON,以便请求有效负载自动被Rack解析为JSON.另一个是processData
必须设置为false以防止默认的jQuery行为:
默认情况下,作为对象传入数据选项的数据(技术上,不是字符串)将被处理并转换为查询字符串,适合默认内容类型"application/x-www-form-urlencoded" .
归档时间: |
|
查看次数: |
2511 次 |
最近记录: |