使用ajax将json数据发布到sinatra路由并发送到数据库
Using ajax to post json data to a sinatra route and send to a database
我在学习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
在rescue
之前尝试@task.save
,我认为它丢失了。
谢谢大家。我想我找到了解决方案,我确信问题的一部分是@task.save。但在我努力解决这个问题的过程中,我认为我可能造成了更多的问题。这是我更新的代码,似乎可以工作。不知道为什么当我使用ko.toJSON(任务)时它不起作用,但使用ko.to JS(任务)
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
相关文章:
- Emberjs应用程序加载在除Index之外的所有路由上
- 正在使用$location.path(.)路由ng视图
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 未激发路由的控制器属性上的观察者
- AngularJS ui路由器html5模式中断路由
- 发送json对象或使用express路由呈现视图
- 使用主干网和rails的静态页面路由
- 如何使用Passport保护路由终结点
- 有没有办法用routerLink/router.navigation附加查询/路由参数
- Nodejs和express路由,如何处理客户端的承诺
- TinyMCE实例在切换角度路由选项时会消失
- 什么'在Express中路由时,应用程序级中间件和路由器级中间件之间的区别是什么
- 使用Ampersand.js路由模块化应用程序
- Angular 2路由已弃用:如何检测CanActivate
- 格式化获取请求的路由
- 在node-js路由中发出http请求
- 无法运行php代码,有角度路由问题
- 更改路由后,运行一次js脚本
- 如何使用服务器上的react路由器处理所有可能的路由
- 使用ajax将json数据发布到sinatra路由并发送到数据库