【问题标题】:Using ajax to post json data to a sinatra route and send to a database使用 ajax 将 json 数据发布到 sinatra 路由并发送到数据库
【发布时间】:2014-09-26 02:44:55
【问题描述】:

我在学习 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

【问题讨论】:

  • but it never writes to the database. 因为您从不保存对象,请尝试在rescue 之前保存它@task.save。
  • 我刚刚添加了@task.save 并更新了上面的示例,它仍然没有保存到数据库中。即使在我的服务器重新启动后。

标签: javascript ruby ajax json sinatra


【解决方案1】:

在rescue之前尝试@task.save,我认为它丢失了。

【讨论】:

    【解决方案2】:

    谢谢大家。我想我找到了解决方案,我确信问题的一部分是@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);    
      });
    
    }
    

    辛纳屈代码

    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
    

    【讨论】:

      猜你喜欢
      • 2013-08-28
      • 2019-10-16
      • 2013-09-14
      • 2018-09-19
      • 1970-01-01
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多