簡體   English   中英

Backbone model.save()正在發送PUT而不是POST

[英]Backbone model.save() is sending PUT instead of POST

我用這個叫保存:

console.log(this.model.isNew());
console.log(this.model);

this.model.save({}, {
    success: function (model, response, options) {
        console.log(response);
    },
    error: function (model, xhr, options) {
        console.log(xhr.result.Errors);
    }   
});

isNew()返回false。 但是this.model的輸出的ID為0.(this.model.id也是0)

我的網址是url: ROOTAREA + "/Expenses/Entry/",

更新工作正常,並按預期使用PUT。

編輯:這是我的模型的一部分:

   defaults: function () {
        return {
            DocumentDate: "",
            JobNo_: "",
            PhaseCode: "",
            WorkTypeCode: "",
            Description: "",
            Quantity: 0,
            UnitCost: 0,
            ExpenseCurrencyCode: "",
            ReimbursementCurrencyCode: "",
            UnitofMeasureCode: "DIEM",
            LineNo_: 0
        };
    },
    idAttribute: "LineNo_",

對於新條目,甚至不應存在ID。 問題在於您未顯示的部分 - 在您實例化的部分中,創建並填充模型。

以下是Backbone文檔的引用:

如果模型還沒有id ,則認為它是新的。

從您的代碼中可以清楚地看出,您正在分配一個id屬性。 你的后端應該這樣做。 而且由於你是在客戶端上進行的,因此骨干網認為它不是新的,並且使用PUT

上面的答案是正確的,如果你的model .save有一個id屬性骨干將執行PUT而不是POST

只需在保存塊中添加type: 'POST'即可覆蓋此行為:

var fooModel = new Backbone.Model({ id: 1});

fooModel.save(null, {
  type: 'POST'
});

您可以在默認值中指定ID,只需確保將其設置為null (isNew將設置為true)。

在你的情況下它一定是

LineNo_: null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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