如何将json响应传递回客户端
问题描述:
在我的Ruby on Rails代码中,我想将json响应发送回客户端。由于我是红宝石新手,我不知道我该怎么做。我想送error = 1 and success = 0
为JSON数据,如果数据不保存到数据库中,如果它成功地保存它应该发送success = 1 and error = 0
请参考下面如何将json响应传递回客户端
这里是我的控制器
class ContactsController < ApplicationController
respond_to :json, :html
def contacts
error = 0
success = 1
@contacts = Contact.new(params[:contact])
if @contacts.save
respond_to do |format|
format.json { render :json => @result.to_json }
end
else
render "new"
end
end
end
我的代码这里是我的javascript代码
$('.signupbutton').click(function(e) {
e.preventDefault();
var data = $('#updatesBig').serialize();
var url = 'contacts';
console.log(data);
$.ajax({
type: 'POST',
url: url,
data: data,
dataType: 'json',
success: function(data) {
console.log(data);
}
});
});
答
有吨的其他优雅的方式,但这是正确的:
class ContactsController < ApplicationController
def contacts
@contacts = Contact.new(params[:contact])
if @contacts.save
render :json => { :error => 0, :success => 1 }
else
render :json => { :error => 1, :success => 0 }
end
end
end
另外添加一个route.rb的路由。如果您需要使用html响应,则必须包含respond_to do | format |。
答
你要调整你的路线,接受JSON数据
match 'yoururl' => "contacts#contacts", :format => :json
然后它会工作
查找到 “的respond_to做|格式|”因为这是你通常对不同的请求格式,html,xml,json等的响应。 – railsdog 2012-07-13 11:42:51
@railsdog我将这段代码添加到我的代码中if @ contacts.save respond_to do | format | format.json {render:json => @ result.to_json} end else render“new” end'但这不起作用。它甚至没有显示任何错误。 – 2619 2012-07-13 11:43:56
我想你会很难得到这个AJAX请求来触发'contacts'控制器中的'contacts'动作。 我认为这是值得看看Rails指南路由 - http://guides.rubyonrails.org/routing.html – mylescarrick 2012-07-13 11:46:37