使用javascript在rails 3中提交远程form_tag,但提交为html

时间:2012-03-15 15:15:24

标签: javascript ruby-on-rails ajax ruby-on-rails-3 forms

我在rails 3中有一个form_tag,如下所示,我想通过javascript使用ajax而不是html提交此表单。当我点击提交按钮时,它确实以javascript提交

- form_tag({:controller => "checkin", :action => "main_page"}, :remote => true, :method => :get, :id => "get_location_form" ) do
  Latitude:
  = text_field_tag 'latitude_field', '', :size => 10, :class => 'submittable'
  Longitude:
  = text_field_tag 'longitude_field', '', :size => 10, :class => 'submittable'
  = submit_tag "Send Info"

我也在使用jQuery,所以我在application.js文件中有这些功能

$(document).ready(function() {
   $("#get_location_form").submitWithAjax();
});

jQuery.fn.submitWithAjax = function() {
  this.submit(function() {
    $.post(this.action, $(this).serialize(), null, "script");
    return false;
  });
  return this;
};

为什么当我手动按下按钮时,它会发送一个javascript请求但是当我在javascript中使用form.submit()提交表单时,它会将其作为HTML请求接收。

感谢任何帮助

2 个答案:

答案 0 :(得分:0)

您可以看到jquery_ujs脚本以了解它的作用:

https://github.com/rails/jquery-rails/blob/master/vendor/assets/javascripts/jquery_ujs.js

我认为您需要更新RequestHeader,例如:https://github.com/rails/jquery-rails/blob/master/vendor/assets/javascripts/jquery_ujs.js#L137

xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);

答案 1 :(得分:0)

已解决:只需使用$("#referenceSubmit").trigger("click");,其中referenceSubmit是提交按钮的ID