[英]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(task)時不起作用,但是使用ko.toJS(task)
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.