2012-11-28 13 views
5

Ho il seguente codice per creare un nuovo modello in una raccolta. Il datastore sottostante è un API remota:Backbone model.create non chiama alcuna richiamata

 var postCreationStatus = this.model.create(newPostModel, { 
      wait : true  // waits for server to respond with 200 before adding newly created model to collection 
     }, { 
      success : function(resp){ 
       console.log('success callback'); 
       console.log(resp); 
      }, 
      error : function(err) { 
       console.log('error callback'); 
       console.log(err); 
      } 
     }); 

Il nuovo modello viene creato, e posso confermare questo dal database, ma né il successo né l'errore di callback vengono chiamati.

Dopo aver completato la creazione, desidero reindirizzare l'utente. Reindirizzamento prematuramente uccide la richiesta AJAX, motivo per cui è importante utilizzare la callback di successo.

Il server risponde con una risposta JSON { id : 11 } e uno stato HTTP di 200 OK.

+1

questo titolo non è corretto, questa domanda non è su collection.create –

risposta

6

Esaminando il codice di backbone, mi sono reso conto che la mia chiamata alla funzione create() non era corretta. Il callback di successo e di errore doveva essere all'interno dell'oggetto passato come secondo argomento e non come terzo argomento. Lo snippet modificato e di lavoro è questo:

var postCreationStatus = this.model.create(newPostModel, { 
    wait : true, // waits for server to respond with 200 before adding newly created model to collection 

    success : function(resp){ 
     console.log('success callback'); 
     console.log(resp); 
     that.redirectHomePage(); 
    }, 
    error : function(err) { 
     console.log('error callback'); 
     // this error message for dev only 
     alert('There was an error. See console for details'); 
     console.log(err); 
    } 
});