savemodel.save([attributes], [options])
Save a model to your database (or alternative persistence layer), by delegating to Backbone.sync. Returns a jqXHR if validation is successful and false
otherwise. The attributes hash (as in set) should contain the attributes you'd like to change â keys that aren't mentioned won't be altered â but, a complete representation of the resource will be sent to the server. As with set
, you may pass individual keys and values instead of a hash. If the model has a validate method, and validation fails, the model will not be saved. If the model isNew, the save will be a "create"
(HTTP POST
), if the model already exists on the server, the save will be an "update"
(HTTP PUT
).
If instead, you'd only like the changed attributes to be sent to the server, call model.save(attrs, {patch: true})
. You'll get an HTTP PATCH
request to the server with just the passed-in attributes.
Calling save
with new attributes will cause a "change"
event immediately, a "request"
event as the Ajax request begins to go to the server, and a "sync"
event after the server has acknowledged the successful change. Pass {wait: true}
if you'd like to wait for the server before setting the new attributes on the model.
In the following example, notice how our overridden version of Backbone.sync
receives a "create"
request the first time the model is saved and an "update"
request the second time.
Backbone.sync = function(method, model) { alert(method + ": " + JSON.stringify(model)); model.set('id', 1); }; var book = new Backbone.Model({ title: "The Rough Riders", author: "Theodore Roosevelt" }); book.save(); book.save({author: "Teddy"});
save accepts success
and error
callbacks in the options hash, which will be passed the arguments (model, response, options)
. If a server-side validation fails, return a non-200
HTTP response code, along with an error response in text or JSON.
book.save("author", "F.D.R.", {error: function(){ ... }});
Please login to continue.