RoR:发送附加数据以使用 Jquery AJAX 提交
Posted
技术标签:
【中文标题】RoR:发送附加数据以使用 Jquery AJAX 提交【英文标题】:RoR: send additional data on for submit with Jquery AJAX 【发布时间】:2018-07-15 15:55:25 【问题描述】:我正在处理一个 Rails 表单,我需要将在 Jquery 中创建的数组发送到我的 rails 控制器。我很难以正确的格式获取数据。
在更新此模型时,我设法让 Jquery 数组通过 AJAX 发送。它为数组参数发送正常 PATCH 和附加 PATCH。所以2更新。一切都可以找到更新,它有点hacky,但可以满足我的需要。
这在创建时不起作用,因为我不能发送两个 POST 请求来创建同一个对象?这有意义吗?
所以我想我的问题是如何让我的 AJAX 数据与普通表单提交一起标记?
这里是
$('#employer_job_submit_button').on('click',function()
$.ajax(
url:"/jobs/<%= @job.id %>",
type:'PATCH',
dataType:'json',
data:
job:
benefits: tags_array
);
);
这是我的观点(部分)
<%= form_for @job, :html => :class => 'profile_form' do |f| %>
.....
<div>
<%= f.submit "Post Job", class: "btn btn-primary btn-block", id: "employer_job_submit_button" %></div>
</div>
<% end %>
我尝试使用单独的代码来创建新工作。像这样:
$('#employer_job_submit_button').on('click',function(e)
e.preventDefault();
var form_data = $('form').serialize()
$.ajax(
url:"/jobs",
type:'POST',
dataType:'json',
data:
job: form_data
);
);
这会通过 AJAX 发送我所有的表单数据,但我不知道如何将“好处”数组添加到表单数据中。这也不是我真正想做的,因为它绕过了标准的 Rails 表单。
我只想添加我的 Jquery 创建的数组以及表单数据。
【问题讨论】:
【参考方案1】:这会通过 AJAX 发送我所有的表单数据,但我不知道如何将“好处”数组添加到表单数据中。
您可以简单地将字符串化数组版本添加到您的数据中。
发件人:
dataType:'json',
data:
job: form_data
收件人:
data:
job: form_data,
benefits: JSON.stringify(tags_array)
通过这种方式,您将在服务器上收到两个变量,如下例所示:
job:firstname=Mickey&lastname=Mouse
benefits:["Saab","Volvo","BMW"]
相反,如果您想继续将您的序列化表单数据添加到您的数组中,您可以使用jquery param,如下所示:
var form_data = $('form').serialize() + '&' + $.param("benefits": tags_array);
在最后一种方式中,您需要在服务器端解码作业参数以提取 **benefits" 数组。
【讨论】:
以上是关于RoR:发送附加数据以使用 Jquery AJAX 提交的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MongoDB 2.4.x 中存储附加数据以使其符合 geoJSON 格式
使用 JQuery AJAX 发送包含文件和附加 json 表单数据的 multipart/form-data
如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]
如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]