我有一张表格。我试图通过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=
答案 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]