如何在Rails中发送JSON数组和表单中的数据
How to send JSON array together with data from form in Rails?
我有视图与表单包含一些字段和谷歌地图工具,以下降标记。我想附加到请求标记坐标存储为JavaScript JSON数组。我会在填写所有字段后发送,并选择标记所有数据,只需点击发送按钮。由jQuery $(this).serialize()
转换的表单不被Rails接受。说明性材料:
$('form').submit(function () {
var url = $(this).attr('action');
var data = { post: JSON.stringify(markersArray) };
// var data = $(this).serialize();
$.post(url, data, function(result) {
//result
});
return false;
});
Rails控制器:def create
received_data = params[:post]
markersArray = ActiveSupport::JSON.decode(received_data)
#only JSON
@post = Post.new(markersArray)
#normal approach only form
#@post = Post.new(received_data)
@post.save
end
编辑
接收JSON:
Parameters: {"post"=>"{'"markers'":[[52.40637,16.92517],[52.40601,16.925040000000003],[52.405750000000005,16.92493],[52.40514,16.92463],[52.404320000000006,16.924200000000003],[52.40393,16.92406]]}"}
收到形式:Parameters: {
"utf8"=>"✓",
"authenticity_token"=>"nehoT1fnza/ZW4XB4v27uZsfFjjOu/ucIhzMmMKgWPo=",
"post"=>{
"title"=>"test",
"description"=>"fewfewfew"},
"commit"=>"Save"}
您可以临时添加隐藏字段并在序列化后将其删除:
$('form').submit(function () {
var url = $(this).attr('action');
var tempField = $('<input type="hidden" name="post" />').val(JSON.stringify(markersArray)).appendTo(this);
var data = $(this).serialize();
tempField.remove();
$.post(url, data, function(result) {
//result
});
return false;
});
或者您可以从反序列化的数据中发送对象,并使用您的post数据进行增强
$('form').submit(function () {
var url = $(this).attr('action');
var data = jQuery.parseJson($(this).serialize());
data.post = JSON.stringify(markersArray)
$.post(url, data, function(result) {
//result
});
return false;
});
相关文章:
- 将带有多维数组的表单从Javascript提交到PHP
- 添加和删除隐藏字段数组中的值,而不提交表单
- 使用Web Html表单创建Javascript数组
- 如何将JS数组添加到Meteor自动表单条目中
- Javascript数组表分页
- 使用ajax(刚刚更改的值)更新数组表
- 如何使用ajax和jquery动态更新数组表
- 使用JavaScript获取数组中表单的所有控件
- 你能提交一个带有文本输入数组的表单吗
- 阵列中的数组到单个数组
- 如何在 meanJS 中存储 ng-repeat 数组表单数据
- 如何在jQuery中访问名称中包含数组的单选按钮
- 使用javascript数组和单选按钮切换DIV的视图
- Javascript多维数组表单html列表
- 推送数组中单击的元素的值
- 使用Javascript中的AJAX提交2D数组表单输入
- 从数组表中输入数据到列表中
- 在jQuery选择器数组中单击1项将应用于该数组中的所有元素
- 添加到数组的单选按钮值
- 在数组中单击某复选框显示值