kat*_*tie 77 ajax jquery ruby-on-rails-3
我是rails和jQuery的初学者.我在一个页面中有两个单独的表单,我想以ajax方式(使用jQuery)单独提交它们.这是我得到了多远.任何人都可以添加或修复此代码以使其工作.我正在使用Rails 3.1和jQuery 1.6.先感谢您.
的application.js
$(".savebutton").click(function() {
$('form').submit(function() {
$(this).serialize();
});
});
Run Code Online (Sandbox Code Playgroud)
第一种形式:
<%=form_for :users do |f| %>
<fieldset>
<legend>Basic details</legend>
<%= f.label :school %>
<%= f.text_field :school,:size=>"45",:class=>"round",:id=>"school" %><br/>
</fieldset>
<p><%= button_to "save and continue",{:class=>"savebutton"} %></p>
<%end%>
Run Code Online (Sandbox Code Playgroud)
第二种形式:
<%=form_for :courses do |c| %>
<fieldset>
<legend>Your current classes</legend>
<label>class:</label><%= c.text_field :subject,:size=>"45",:class=>"round" %><br/>
</fieldset>
<p><%= button_to "save and continue",{:class=>"savebutton"} %></p>
<%end%>
Run Code Online (Sandbox Code Playgroud)
SchoolController
class SchoolController < ApplicationController
respond_to :json
def create
@school = current_user.posts.build(params[:school].merge(:user => current_user))
if @school.save
respond_with @school
else
respond_with @school.errors, :status => :unprocessable_entity
end
end
end
Run Code Online (Sandbox Code Playgroud)
CourseController与SchoolController的形状相同
Joh*_*han 108
你想要:
下面的代码应该这样做:
$('form').submit(function() {
var valuesToSubmit = $(this).serialize();
$.ajax({
type: "POST",
url: $(this).attr('action'), //sumbits it to the given url of the form
data: valuesToSubmit,
dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
}).success(function(json){
console.log("success", json);
});
return false; // prevents normal behaviour
});
Run Code Online (Sandbox Code Playgroud)
Mil*_*uzz 58
如果您:remote => true在表单上使用,可以使用JavaScript提交
$('form#myForm').trigger('submit.rails');
Run Code Online (Sandbox Code Playgroud)
lul*_*ala 33
Rails 3中进行ajax表单提交的首选方法是使用Rails-ujs.
基本上你允许Rails-ujs为你做ajax提交(你不需要编写任何js代码).然后你只需编写js代码来捕获响应事件(或其他事件)并做你的事情.
这是一些代码:
首先,使用form_for中的远程选项,因此默认情况下将通过ajax提交表单:
form_for :users, remote:true do |f|
Run Code Online (Sandbox Code Playgroud)
然后,当你想根据ajax响应状态(例如成功的响应)做一些动作时,写下javscript逻辑,如下所示:
$('#your_form').on('ajax:success', function(event, data, status, xhr) {
// Do your thing, data will be the response
});
Run Code Online (Sandbox Code Playgroud)
有几个事件可以挂钩.
| 归档时间: |
|
| 查看次数: |
80430 次 |
| 最近记录: |