【问题标题】:backbone model save not working骨干模型保存不起作用
【发布时间】:2013-05-08 20:57:04
【问题描述】:

我尝试使用 Backbone.js 模型与服务器同步数据。但是保存方法不起作用。谁能帮我找出原因?

以下代码有效(不使用 Backbone 模型):

var newComment = {
    user: user,
    createdDate: date,
    content: text
  }

  //TODO send ajax post request to record the data

  $.ajax({
    url: "comment.php",
    context: document.body,
    data: newComment,
    type: 'POST'
  }).done(function(resp) {
    console.log("resp", resp);
  });

代码不工作:

var Comment = Backbone.Model.extend({
     urlRoot: 'comment.php'
  });

var comment = new Comment();
comment.save({content: text, dsm_line_item_id: "49934380"}, {
    succcess: function(model, resp, opt) {
          console.log("successfully saved" + resp);
        },
    error: function(model, resp, opt) {
          console.log("error", resp);
        }
    })

【问题讨论】:

  • 控制台显示的错误信息是什么?将前导斜杠添加到 url (url: "/comment.php") 时是否有效?
  • 没有错误信息。不调用成功和错误回调。添加前导斜杠也不起作用....
  • 关于 AJAX 调用的信息呢?在控制台的网络选项卡中查看。
  • 我将在网络选项卡上截屏,稍后将其附加到原始问题中。

标签: javascript backbone.js


【解决方案1】:
succcess: function(model, resp, opt) {

这是错字吗

应该是success: function(model, resp, opt) {

【讨论】:

    【解决方案2】:

    这是一个猜测,但我认为这可能是答案。 Backbone 的save 委托给Backbone.sync,这是Backbone 用来读取或保存模型到服务器的函数。

    Backbone 使用 POST、GET、DELETE 和 PUT;但有些服务器在 PUT 和 DELETE 方面存在问题。也许您的服务器有 PUT 问题,这就是您的代码无法正常工作的原因。

    你可以试试Backbone.emulateHTTP = true;。该选项允许您使用不支持 Backbone 的 RESTful 方法的旧式 Web 服务器。在同步期间,PUT 和 DELETE 将被 POST 替换。

    【讨论】:

    • 谢谢。我试过了,但没有奏效。请求是 POST,我相信我使用的是后期版本的 PHP,应该可以解决这种情况。
    • 嗯。太遗憾了。我的猜测是您在有效的示例中使用了 POST,并且可能 Backbone 在无效的示例中使用了 PUT。我会删除答案,因为它是错误的。祝你好运!
    • 再想一想,我认为我不会删除答案。有类似问题的人可以找到这个,也许答案适用于他的情况并帮助他。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2012-04-24
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多