2013-08-15 10 views
11

Se inserisco i parametri, non ottengo nessun successo/errore/callback completati, ma Fiddler mostra una risposta di 200 e i miei dati json richiesti sono lì . Questa è la chiave. Fiddler sta mostrando che il round trip è stato un successo e i dati richiesti sono qui client side e in buone condizioni. Il problema è backbone successo/fallimento/completato non chiamato. Basta avere un grande nulla.Recupero modello Backbone.js: i parametri causano il successo/errore/le richiamate completate per non attivarsi

Con lo stesso URL di base, se si estrapolano i parametri (e li si rimuove dal mio servizio Web in parallelo), vengono attivati ​​sia il successo che il completamento. Qui di seguito è la mia recuperare "con" parametri:

myModel.fetch({ 
    data: { 
     name: 'Bob', 
     userid: '1', 
     usertype: 'new' 
    } 
}, { 
    success: (function() { 
     alert(' Service request success: '); 
    }), 
    error: (function (e) { 
     alert(' Service request failure: ' + e); 
    }), 
    complete: (function (e) { 
     alert(' Service request completed '); 
    }) 
}); 

Come può il comportamento spina dorsale essere diverso? È lo stesso URL, solo con o senza parametri.

Sto indovinando che la distinzione è che sotto la cappa del backbone fetch, lo scenario dei parametri "con" è un post e che i parametri "senza" sono un semplice get. La console IE riflette questo con un output leggermente diverso.

"con" parametri mia console browser IE riporta un avvertimento (non un errore, ma un avvertimento) che la richiesta necessaria CORS:

SEC7118: XMLHttpRequest per http://example.com/service/myservice.asmx/myoperation?name=Bob&userid=1&usertype=new richiesto Croce Origin Resource Sharing (CORS).

Penso che mi stia dicendo "hey, hai fatto una richiesta di origine incrociata e l'ho lasciata passare". "Senza" i parametri non ottengo quell'avvertimento. Io ho le intestazioni di servizio impostati:

Access-Control-Allow-Origin: *

E le risposte effettivamente tornano riflette tale politica.

Quindi la domanda è: perché i success backbone/errori/callback completati non attivano "con" i parametri? I dati tornano. La spina dorsale non dovrebbe riflettere il successo?

+0

'fetch' richiede un singolo argomento. Leggi [questo] (http://backbonejs.org/docs/backbone.html#section-55). – fbynite

risposta

14

Inserisci i tuoi metodi success, error e complete nello stesso oggetto che hai data. Ci dovrebbe essere solo il singolo oggetto. Sotto il cofano Backbone utilizza semplicemente jQuery's ajax() method in modo che l'oggetto passato a fetch() possa utilizzare qualsiasi proprietà che possa essere inclusa nell'oggetto delle impostazioni passato a $.ajax().

myModel.fetch({ 
    data: { 
     name: 'Bob', 
     userid: '1', 
     usertype: 'new' 
    }, 
    success: (function() { 
     alert(' Service request success: '); 
    }), 
    error: (function (e) { 
     alert(' Service request failure: ' + e); 
    }), 
    complete: (function (e) { 
     alert(' Service request completed '); 
    }) 
}); 
+0

Bingo. Grazie mille. Codice modificato sopra. – Robert

Problemi correlati