形成序列化问题

时间:2010-05-28 11:38:35

标签: ruby-on-rails jquery

我有一张表格。我试图通过AJAX GET请求验证它。

所以我试图在GET请求数据中发送字段值。

$('#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]

我的GET请求触发器如下所示

$.get('/site/sign_up',{data : $('#uxMyForm').serialize() }, function(data){
 alert(data);
});

以上jquery行生成请求..在动作方法上我执行以下操作

render :text => params

当我观察GET中发送的内容时,在firebug PARAMS中

**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=

1 个答案:

答案 0 :(得分:0)

表单本身如何。我没有Ruby on rails的经验 - 如果它以一种令人兴奋的方式构建表单 - 但它看起来好像只有两个表单元素:authenticity_token和customer - 其中customer是一个项目数组。这是您发布的数据,但我对其进行了解码并添加了一些换行符:

authenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6/Q0zLeQqwIahJZJfE=
&customer[uxName]=
&customer[uxEmail]=
&customer[uxResidentialPhone]=
&customer[uxMobilePhone]=
&customer[uxDateOfBirth]=
&customer[uxAddress]=
&customer[uxResidentialStatus]=

您可以做的是将表单序列化为数组并在使用jQuery ajax请求发送之前将其清理干净。当我不得不序列化.net runat-server表单元素时,我做了类似的事情:

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);

所以blabla $ ABCPlaceHolder $ tbxEmail的instad我在数组中得到了tbxEmail。你也可以这样做来获取uxName,uxEmail等而不是客户数组。

然而再次注意,由于我对ruby缺乏经验,这可能不是最好的解决方案 - 也许有一个设置你可以改变以不同的方式构建HTML表单?

<强>更新

我不确定红宝石是如何工作的,但在谷歌搜索后我发现你应该能够使用params接收你的价值:客户作为数组。

params:客户应该包含一系列值

{:uxName => "", :uxEmail => "" }

我希望能告诉你如何接收数据。也许(警告 - 疯狂猜测!)像这样?

params[:customer][:uxName]