51 votes

Backbone model.save () n'appelant pas de rappel d'erreur ou de rappel de succès

J'essaie de mettre à jour un enregistrement dans la base de données afin de définir un modèle avec des données et d'appeler la méthode .save (). La demande PUT est déclenchée et l'entrée de la base de données est mise à jour. Le problème n'est pas que des rappels de succès ou d'erreur sont appelés. Quelle pourrait-être la cause?

 sessionsModel.save({
    error: function() {
        alert('test');
    },
    success: function () {
        alert('test');
    }
});
 

Edition: la requête retourne un objet JSON

74voto

marcin_koss Points 1264

Vient de trouver un problème similaire où le problème a été résolu. Vous devez mettre quelque chose comme premier paramètre (je mets null car mon modèle était déjà rempli explicitement de données) et object avec callbacks comme deuxième. Donc, quelque chose comme

 sessionsModel.save(null, {success:function() {} });
 

22voto

Yasser Points 9307

Alors que la recherche sur ce, j'ai d'abord atterri sur ce fil qui ne fonctionne pas pour moi, mais semblait fonctionner pour d'autres, plus tard, je suis tombé sur ce lien, où quelqu'un avait tenté null au lieu de {} comme premier paramètre.

this.model.save(null, {
    success: function (model, response) {
        console.log("success");
    },
    error: function (model, response) {
        console.log("error");
    }
});

donc, cela a fonctionné pour moi. Espérons que cela vous aide aussi.

18voto

Igor G. Points 868

Votre serveur doit renvoyer un objet JSON. Si la réponse n'est pas un objet JSON, les rappels ne seront pas déclenchés. Vérifiez cette solution http://stackoverflow.com/a/22176044/1579718

-1voto

Voici ma solution CoffeeScript avec backbone permettant d’enregistrer le nouveau modèle:

  my_model.save null
    success: (model, responce)->
      console.log model
    error: (model, error)->
      defer.reject(error)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X