2012-03-15 32 views
3

我在rails 3中有一個form_tag,如下所示,我想通過javascript使用ajax而不是html來提交此表單。當我點擊提交按鈕它並提交,如JavaScript在rails 3中使用javascript提交遠程form_tag,但提交爲html

- 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請求接收。

任何幫助表示讚賞

回答

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); 
+0

我在哪裏更新我的RequestHeader?我檢查了我的jquery_ujs,它在那裏,但我不確定我會在哪裏以及如何更新它。林有點新手,感謝您的快速回復 – user1167805 2012-03-15 16:13:58

0

解決:只需使用$("#referenceSubmit").trigger("click");其中referenceSubmit是提交對話的ID在