簡體   English   中英

使用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(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM