【发布时间】:2014-09-17 10:29:59
【问题描述】:
在尝试对 Rails 进行 AJAX 调用时,我对 JSON.stringify() 和 $.param 有一些疑问
此代码有效
$.ajax({
url: '/api/v1/login',
dataType: 'application/json',
method: 'post',
data: $.param({"user": attrs}),
success: function(a,b,c) {
alert(JSON.parse(b));
}
});
这段代码没有
$.ajax({
url: '/api/v1/login',
dataType: 'application/json',
method: 'post',
data: $.JSON.stringify({"user": attrs}),
success: function(a,b,c) {
alert(JSON.parse(b));
}
});
$.param({"user": attrs}) 返回user%5Busername%5D=ABC&user%5Bpassword%5D=123456
JSON.stringify({"user": attrs}) 返回{"user":{"username":"triet","password":"123456"}}
我认为JSON.stringify 应该可以工作,但是当我咨询rails 控制台时,它给了我{"{\"user\":{\"username\":\"triet\",\"password\":\"123456\"}}"=>"[FILTERED]"}。
谁能告诉我为什么会有 [FILTERED] 部分?我找不到任何关于它的文档提及。谢谢
【问题讨论】:
-
在不使用
$.param或JSON.stringify的情况下无法传递对象的总体问题是什么? -
data: $.param({"user": attrs})很酷,不知道你能做到。 @charlietfl - 这在 Rails 中很有用,其中属性只有在使用对象名称命名时才能被批量分配。 -
@maxpleaner jQuery 会在内部为你解析数据,在这种情况下不需要它
标签: jquery ruby-on-rails ajax json