【问题标题】:PUT and POST requests in Backbone.jsBackbone.js 中的 PUT 和 POST 请求
【发布时间】:2012-12-07 00:01:53
【问题描述】:

我还有一个关于 PUT 和 POST 请求的问题。所以,这里我有一个表单,其中包含“名称”和“链接”等字段。

在提交该表单时,我无法在执行 this.model.save() 时将该表单发布到服务器;

另外,我如何理解模型何时调用 POST 以及何时调用 PUT 请求?由于我的 api 响应中没有任何“id”属性,所以我的模型也没有任何 id。

那么如何在单击“提交”按钮时将表单字段值作为 POST 请求传递?

另外,有没有一种方法可以调用请求:例如:如果我点击表单的“更新”按钮,我将从我的模型中调用一个函数

updateModel:function(options){
this.update("update","/messages",[options])
}

或者可以像这样读取获取请求

getModel:function(options){
this.update("read","/messages",[options])
}

【问题讨论】:

  • "在提交该表单时,我无法在执行 this.model.save() 时将该表单发布到服务器;" 为什么你不能这样做?
  • 我不确定...它不会调用 POST 或 PUT 方法
  • 不会自动执行此操作。您需要像我的回答中那样的事件处理程序来调用save
  • 好的..所以我尝试了你的方式,这是我得到的响应选项/abc/messages..这是什么选项?为什么它不作为 POST 进行?
  • 我不明白。如果你有它的小提琴或什么我会看看。

标签: jquery backbone.js backbone-model backbone-forms


【解决方案1】:

save方法会根据isNew()的返回值来判断是POST还是PUT。此方法通常只检查正在填充的id。您可以覆盖它以使用其他指标。

您将提交时的表单字段值直接传递到您的保存方法。像这样的:

//In your view
events : {"submit" : "onSubmit"},
onSubmit : function(e) {
  e.preventDefault();
  this.model.save({name: this.$("#name").val()}, {
    success : function (newModel) { /* Do something here. */ }
  });
}

另一种选择是使用像 Backbone.Modelbinder 这样的库来为您处理 DOM 和模型之间的同步。

您不需要在模型上定义这些新方法。相反,您应该在模型或相应的控制器上定义正确的 url 方法。然后你可以使用普通的fetchsave 方法来处理你的get/updates。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 2017-08-10
    • 2020-05-09
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多