Ruby on rails 表单序列化问题
我有一张表格。我试图通过AJAX GET请求验证它 所以我试图发送GET请求数据中的字段值Ruby on rails 表单序列化问题,ruby-on-rails,jquery,Ruby On Rails,Jquery,我有一张表格。我试图通过AJAX GET请求验证它 所以我试图发送GET请求数据中的字段值 $('#uxMyForm').serialize(); 问题是它返回了一些无法理解的东西。我以前使用过序列化。这太奇怪了 serialize的返回值为 actionsign_upcontrollersitedataauthenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6%2FQ0zLeQqwIahJZJfE%3D&customer%5BuxName%5D=&a
$('#uxMyForm').serialize();
问题是它返回了一些无法理解的东西。我以前使用过序列化。这太奇怪了
serialize的返回值为
actionsign_upcontrollersitedataauthenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6%2FQ0zLeQqwIahJZJfE%3D&customer%5BuxName%5D=&customer%5BuxEmail%5D=&customer%5BuxResidentialPhone%5D=&customer%5BuxMobilePhone%5D=&customer%5BuxDateOfBirth%5D=&customer%5BuxAddress%5D=&customer%5BuxResidentialStatus%5D=
我不知道怎么用这个
谢谢
更新:
我的问题是如何处理这样的请求?像这样
puts params[:data][:customer][:uxName]
params[:customer][:uxName]
我的GET请求触发器如下所示
$.get('/site/sign_up',{data : $('#uxMyForm').serialize() }, function(data){
alert(data);
});
上面的jquery行生成请求。。关于动作方法,我做了以下几点
render :text => params
当我观察GET中发送的内容时,在firebug参数中
**data** authenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6%2FQ0zLeQqwIahJZJfE%3D&direct_customer%5BuxName%5D=&direct_customer%5BuxEmail%5D=&direct_customer%5BuxResidentialPhone%5D=&direct_customer%5BuxMobilePhone%5D=&direct_customer%5BuxDateOfBirth%5D=&direct_customer%5BuxAddress%5D=&direct_customer%5BuxResidentialStatus%5D=
我在警报中打印的返回值
actionsign_upcontrollersitedataauthenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6%2FQ0zLeQqwIahJZJfE%3D&direct_customer%5BuxName%5D=&direct_customer%5BuxEmail%5D=&direct_customer%5BuxResidentialPhone%5D=&direct_customer%5BuxMobilePhone%5D=&direct_customer%5BuxDateOfBirth%5D=&direct_customer%5BuxAddress%5D=&direct_customer%5BuxResidentialStatus%5D=
表单本身看起来如何。我没有使用Ruby on rails的经验——如果它以一种新的令人兴奋的方式构建表单的话——但是看起来似乎只有两个表单元素:Authentity\u token和customer——其中customer是一组项目。这是您发布的数据,但我对其进行了URL解码并添加了一些换行符:
authenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6/Q0zLeQqwIahJZJfE=
&customer[uxName]=
&customer[uxEmail]=
&customer[uxResidentialPhone]=
&customer[uxMobilePhone]=
&customer[uxDateOfBirth]=
&customer[uxAddress]=
&customer[uxResidentialStatus]=
您可以做的是将表单序列化为数组,并在使用jQueryAjax请求发送表单之前对其进行清理。我曾经做过类似的事情,当时我必须序列化.net runat服务器表单元素:
var serializedData = $(form).serializeArray();
for( i=0; i < serializedData.length; i++)
{
// For each item in the array I get the input-field name after the last $ character
var name = serializedData[i].name;
var value = serializedData[i].value;
if( name.indexOf('$') != -1)
name = name.substr( name.lastIndexOf('$')+1 );
serializedData[i].name = name;
}
var ajaxPostData = $.param(serializedData);
我希望这能告诉你如何接收数据。也许是警告——胡猜!像这样
puts params[:data][:customer][:uxName]
params[:customer][:uxName]
它将其格式化为name1=value1&name2=value2格式…与浏览器中的querystring获取请求相同,这是您想要从中获取的内容。序列化,如果您发布了提交代码,则更容易查看您实际需要的内容。已更新。。我的问题是我无法访问任何发布的值。尝试过…没有运气。。。你建议的方式通常适用于post请求。。。在这种情况下,它返回一个零。。。我甚至尝试了params[:data][:customer][:uxName]…好的,您也可以发送完整的ajax请求,这样就可以到处查找错误了。我们不能确定是否有任何东西被发送到页面,我想:对不起,我的坏。。。终于轻松解决了…$。获取'url',$'form'。序列化而不是$。获取'url',{data:$'form'。序列化}成功了