我在学习JavaScript如何围绕我的应用程序发送数据方面遇到了一些问题。现在我无法弄清楚如何将一些JSON数据返回到我创建新数据库条目的Sintra POST路由。我没有收到任何错误消息,我的应用程序在屏幕上显示数据,但它从不写入数据库。
这是我最近的失败尝试
通过一些提醒,我已经确定我发送的JSON看起来像这样
{"description":"test","created_at":"2014-09-25T10:31:29-04:00","updated_at":"2014-09-25T10:31:29-04:00"}
JavaScript代码
t.saveTask = function(task) {
var t = ko.toJSON(task);
$.ajax({
type: "POST",
url: "/tasks/new",
dataType: 'json',
contentType: "application/json",
data:JSON.stringify(t)
}).done(function(){
alert (t);
});
辛特拉代码
post "/tasks/new", :provides => :json do
begin
params = JSON.parse(request.env["rack.input"].read)
@task = Task.new
@task.complete = false
@task.description = params[:description]
@task.created_at = DateTime.now
@task.updated_at = DateTime.now
@task.save
rescue Exception => e
return e.message
end
end
答案 0 :(得分:0)
在@task.save
之前尝试rescue
,我认为它已丢失。
答案 1 :(得分:0)
谢谢大家。我想我找到了一个解决方案,我确定问题的一部分是@ task.save。但在我努力解决这个问题时,我想我可能会引发更多问题。这是我的更新代码似乎工作。不知道为什么当我使用ko.toJSON(任务)它不起作用,但与ko.toJS(任务)
JavaScript代码
t.saveTask = function(task) {
var t = ko.toJS(task);
alert (t);
$.ajax({
type: "POST",
url: "/tasks/new",
data: t
}).done(function(){
alert (t);
});
}
Sinatra代码
post "/tasks/new" do
content_type :json
@task = Task.new
@task.complete = false
@task.description = params[:description]
@task.created_at = DateTime.now
@task.updated_at = DateTime.now
@task.save
end