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 对象? [复制]

如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]

如何在 jQuery 中发送带有 Ajax 请求的 FormData 对象? [复制]