【问题标题】:destroy() does not send DELETE requestdestroy() 不发送 DELETE 请求
【发布时间】:2013-05-17 19:11:24
【问题描述】:

我知道这个问题已经被问过很多次了,但我找不到我的问题的解决方案。在所有其他问题中,答案都与未设置 ID 或 _id 等其他内容有关。

我没有任何自定义同步或销毁方法。一切都是标准的。

我的模特和收藏:

class Load extends Backbone.Model
    localStorage: new Backbone.LocalStorage 'relodr.load'
    urlRoot: relodr.api.url + "loads/"
class Loads extends Backbone.Collection
    model = Load
    localStorage: new Backbone.LocalStorage 'relodr.loads'
    url: relodr.api.url + "loads/"

这是我要删除模型的地方:

delete: (e) =>
        f = $(e.currentTarget)
        id = $(f.parent()).attr("data-id") 
        load = new Loads()
        load.fetch()
        model = load.get id
        console.log model
        model.destroy()

模型已从集合中删除,但 DELETE 从未发送到服务器。

这是 console.log 模型:

Backbone.Model {cid: "c5", attributes: Object, collection: Loads, _changing: false,     _previousAttributes: Object…}
    _changing: false
    _events: Object
    _pending: false
    _previousAttributes: Object
    attributes: Object
    changed: Object
    cid: "c5"
    id: 2
    __proto__: Object

所以我有一个模型的 ID,我的模型确实有一个 URL 集。

如果我这样做:

model = new Load
    id: 99
model.destroy()

它起作用了,虽然它返回一个 500 错误(显然),但发送了 DELETE 请求。所以它告诉我网址等正确且有效..

只是不知道为什么我的销毁方法不起作用。

更新

有趣的是,当我记录上面创建的模型时,它看起来像这样:

Load {cid: "c6", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}

所以一个说Load(模型名称),另一个说Backbone.Model

【问题讨论】:

    标签: backbone.js backbone-model


    【解决方案1】:

    我猜你可能没有为你的模型设置urlRoot 属性。

    【讨论】:

    • 我会尝试删除 Load 模型的 localStorage 属性。将其留给 Loads 集合。
    • 删除了,还是一样。我只是添加了它来尝试其他方法
    • 对我来说一切都很好,除了你同时配置了 localStorage 和 urls。请再次放纵我并完全删除 localStorage 行。加载仍应配置 urlRoot。负载应该有 url。谢谢。
    【解决方案2】:

    我最近遇到了这个问题。这不是 Backbone 问题,而是 jQuery 问题。 jQuery 问题默认为“json”的数据类型,并且它期望数据中包含 JSON 有效负载,因此当您发出调用时,jQuery 实际上在 DELETE 上放屁。

    要解决这个问题,请尝试使用将传递给 jQuery.ajax 的一些选项进行删除:

    model.delete({
        type: 'text',
        contentType : 'text/plain'
    });
    

    我发现这很有魅力。

    【讨论】:

    • 哎呀..是的..哦,好吧...您的服务器是否需要某种有效负载来删除?或者它是您必须执行 POST 才能删除的旧式服务器之一?
    猜你喜欢
    • 2011-07-07
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多