如何通过jquery/ajax将数据作为JSON对象发送和存储到rails?
{问题更新} 我想向安装rails的服务器发送一些数据。我的数据采用JSON格式,例如:如何通过jquery/ajax将数据作为JSON对象发送和存储到rails?,jquery,ruby-on-rails,ruby,ajax,json,Jquery,Ruby On Rails,Ruby,Ajax,Json,{问题更新} 我想向安装rails的服务器发送一些数据。我的数据采用JSON格式,例如: var JSONObject= { table1: { title: "Title of text", url: "Url of text" } } 我在cilent中使用以下代码: $.ajax({
var JSONObject= {
table1: {
title: "Title of text",
url: "Url of text"
}
}
我在cilent中使用以下代码:
$.ajax({
type: "POST",
url : "http://webadress.com/table1",
cache: false,
data: JSONObject,
statusCode: {
200:function() { alert("200"); },
202:function() { alert("202"); }
},
success: function() { alert("Data Send!");},
error: function(xhr){ alert("The error code is: "+xhr.statusText);}
});
在cilent中,存在以下代码:
def create
@table1= Table1.new(:title => params[:title], :url => params[:url])
respond_to do |format|
if @table1.save
format.html { redirect_to(@table1, :notice => 'User was successfully created.') }
format.xml { render :xml => @table1, :status => :created, :location => @table1}
format.json { render :json => @table1}
else
format.html { render :action => "new" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
format.json { render :json => @user.errors, :status => :unprocessable_entity }
end
end
end
但它不起作用。
如何获取数据并将其存储在数据库中。我的意思是如何将每个元素放入不同的列中?最佳实践
首先,您应该在else语句中响应json,因为如果无法保存Table1,您将得到406(不可接受)响应代码,这是不合适的。422(不可处理实体)是合适的
format.json { render :json => @user.errors, :status => :unprocessable_entity }
解决方案
那么我认为错误在下面的陈述中
params[:table1]
1。如果您的数据是按照您所说的那样发送的,您可以这样做
@table1= Table1.new(:title => params[:title], :url => params[:url])
2.如果你想写干净的代码,你应该这样发送数据
table1: {
title: "Title of text",
url: "Url of text"
}
通过将数据包装到表1中,您无需更改任何内容。最佳实践
首先,您应该在else语句中响应json,因为如果无法保存Table1,您将得到406(不可接受)响应代码,这是不合适的。422(不可处理实体)是合适的
format.json { render :json => @user.errors, :status => :unprocessable_entity }
解决方案
那么我认为错误在下面的陈述中
params[:table1]
1。如果您的数据是按照您所说的那样发送的,您可以这样做
@table1= Table1.new(:title => params[:title], :url => params[:url])
2.如果你想写干净的代码,你应该这样发送数据
table1: {
title: "Title of text",
url: "Url of text"
}
通过将数据包装到表1中,您无需更改任何内容。因为您将AJAX POST数据作为包装在键
表1
下的对象传递,所以您应该能够在Rails控制器的操作中读取对象作为参数[:表1]
。您可以修改此行:
@table1= Table1.new(:title => params[:title], :url => params[:url])
到
此外,您还可以在最后添加一个故障保护条件,以避免NoMethodError
如果params[:table1]
不可用
@table1= Table1.new(:title => params[:title], :url => params[:url])\
if params[:table1]
并进一步修改您的if条件
if @table1.save
到
希望这有帮助。:) 由于您将AJAX POST数据作为包装在键
table1
下的对象传递,因此您应该能够在Rails控制器的操作中将该对象作为params[:table1]
读取。您可以修改此行:
@table1= Table1.new(:title => params[:title], :url => params[:url])
到
此外,您还可以在最后添加一个故障保护条件,以避免NoMethodError
如果params[:table1]
不可用
@table1= Table1.new(:title => params[:title], :url => params[:url])\
if params[:table1]
并进一步修改您的if条件
if @table1.save
到
希望这有帮助。:) 因为这个问题已经问了很久了,我想我的回答对作者没有帮助,但我希望我能帮助其他有类似问题的人 我基本上替换了这个代码:
@table1= Table1.new(:title => params[:title], :url => params[:url])
用这个
@table1= Table1.new(params[:table1])
使用Firefox和Firebug(调试客户端/javascript)以及RailCast(调试RoR)帮助我调试并在代码中找到错误:
此链接也可能有助于:
由于这个问题已经问了很久了,我想我的回答对作者没有帮助,但我希望我能帮助其他有类似问题的人 我基本上替换了这个代码:
@table1= Table1.new(:title => params[:title], :url => params[:url])
用这个
@table1= Table1.new(params[:table1])
使用Firefox和Firebug(调试客户端/javascript)以及RailCast(调试RoR)帮助我调试并在代码中找到错误:
此链接也可能有助于:
很高兴听到它起作用了。你能证实这个答案吗?谢谢,我认为它会起作用,但它不起作用。问题是,我按照你写的做了所有的事情。但这并不可怕。我的代码位于var JSONObject={“page”:{“title”:“title of text”,“url”:“url of text”,“summary”:“aaaaa”}}$.ajax({type:“POST”,url:,cache:false,contentType:“application/json;”,数据:JSONObject,状态代码:{200:function(){alert(“200”);},202:function(){alert(“202”);},成功:function(){alert(“Working”);},错误:function(xhr){alert(“错误为:”+xhr.statusText);});然而,在下面的地址中,只创建了一个空数据。很高兴听到它起作用了。你能证实这个答案吗?谢谢,我认为它会起作用,但它不起作用。问题是,我按照你写的做了所有的事情。但这并不可怕。我的代码位于var JSONObject={“page”:{“title”:“title of text”,“url”:“url of text”,“summary”:“aaaaa”}}$.ajax({type:“POST”,url:,cache:false,contentType:“application/json;”,数据:JSONObject,状态代码:{200:function(){alert(“200”);},202:function(){alert(“202”);},成功:function(){alert(“Working”);},错误:function(xhr){alert(“错误为:”+xhr.statusText);});然而,在下面的地址中,只创建了一个空数据。您是否可以共享在Rails应用程序日志中可能看到的任何异常?如果您可以将其粘贴到并在此处共享链接,那就太好了。您可以共享您在Rails应用程序日志中可能看到的任何异常吗?如果你能将它粘贴到并在这里共享链接,那就太好了。