Backbone.js save always triggers error even on success -


i've read several of other posts problem , none of solutions seem working me. have following code in view:

  this.model.set({       username: $('#user-username').val(),       role: $('#user-role').val(),       description: $('#user-description').val()   });    this.model.save({ user_id: this.model.get('user_id')}, {     success: function(user, response) {       console.log('success:', response);       $('.flash-message').text("success").show();     },      error: function(user, response) {       console.log('error:', response);       $('.flash-message').text(response.error).show();     }    }); 

and on server controller (nodejs running express 3):

usercontroller.prototype.updateaction = function(req, res) { if (req.route.method != "put") {                                   res.send({status: "error", error: "update must put action , must include values"});     return false;                                              } var query = {'user_id': req.params.id};                        var user = req.body; var userrepository = this.userrepository                        // delete _id avoid errors delete user._id;  userrepository.update(query, user, {}, function(err, updated) {     if ((err) || (!updated)) {         res.send({"status": "error", "error": err});         return false;     }     // send updated user     util.log('updated user ' + user.user_id);     res.setheader('content-type', 'application/json');     res.status(200);     res.send(json.stringify({"status": "success", "updated": updated})); }); 

}

on save, model saved correctly in server , have verified server response this. so, far can tell server returning status 200, valid json, valid json response header. , yet backbone model.save function triggers error callback. can please tell me why , how resolve this?

i able work if set datatype text so:

this.model.save({ user_id: this.model.get('user_id')}, {     datatype: "text",     success: function(user, response) {       console.log('success:', response);       $('.flash-message').text("success").show();     },      error: function(user, response) {       console.log('error:', response);       $('.flash-message').text(response.error).show();     }   }); 

but doing not allow me response server. instead in response var:

success: {   "_id": "5133b02062e15ed1d2000001", } 

backbone expects model sent in put or post request body.

instead of:

res.send(json.stringify({"status": "success", "updated": updated})); 

try in server's response:

res.json(user); 

Comments

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -