Javascript 如何使用jquery向rails发送json请求

Javascript 如何使用jquery向rails发送json请求,javascript,jquery,ruby-on-rails,ajax,json,Javascript,Jquery,Ruby On Rails,Ajax,Json,我想向Rails3服务器发送JSON post请求。我有以下ajax请求: $.ajax({ 键入:“POST”, contentType:“应用程序/json”, url:url, 数据:{电子邮件:example@test.com,密码:“password”}, 成功:成功, 错误:onError, 数据类型:“json” }); 但是,rails服务器接收的数据如下: {u json=>[“对象”]} 我希望它以如下方式接收: {“电子邮件”=>“exmaple@test.com

我想向Rails3服务器发送JSON post请求。我有以下ajax请求:

$.ajax({
键入:“POST”,
contentType:“应用程序/json”,
url:url, 数据:{电子邮件:example@test.com,密码:“password”},
成功:成功,
错误:onError,
数据类型:“json”
});

但是,rails服务器接收的数据如下:

{u json=>[“对象”]}

我希望它以如下方式接收:

{“电子邮件”=>“exmaple@test.com“,“密码”=>“[已筛选]”}

我认为这是因为如果内容类型是json,jquery会用_json对象包装数据


有人知道我应该怎么做吗?

根据jquery文档,如果您将一个对象传递给数据,它将尝试一些自动反序列化

设置
processData:false
,然后将数据设置为json字符串


您是否尝试过自己进行序列化(使用jQuery.param)

因此,您的ajax请求变成:

$.ajax({ type: 'POST',
contentType: "application/json",
url: url, data: $.param({email: "example@test.com", password: "password"}),
success: onSuccess,
error: onError,
dataType: "json"
});

这原来是由于旧版本jquery中的bug造成的。我现在使用jquery 1.5版并发送post请求,如下所示:

$.post(url, { email: emailVal, password: passwordVal }, callback, "json").error(errorHandler);

现在它工作得非常好。

谢谢你的回答。我已经尝试过不反序列化它,但这不是问题所在。实际上,jquery在默认情况下序列化传递的数据。@knoguchi-yep-jquery.param是jquery用来序列化对象的。我只是想知道在其他地方进行序列化(而不是.ajax本身)是否有助于解决这个问题。谢谢你的建议。我已经尝试按照您的建议手动序列化,但不幸的是,它没有改变任何内容。
$.post(url, { email: emailVal, password: passwordVal }, callback, "json").error(errorHandler);