2013-08-28 10 views
9

ho il seguente codice per recuperare i dati per la mia collezione, ma con i colori specificare quale dovrebbe provenire dal server:Backbone.js recuperano metodo opzione dati con sta passando params URL con parentesi quadre

fruits = new FruitsCollection(); 
fruits.fetch({ 
    data: {color: ['red', 'green']} 
}); 

Questo è quello che mi aspetto:

http://localhost:8000/api/fruits/?color=red&color=green 

Questo è quello che ho ottenuto:

http://localhost:8000/api/fruits/?color[]=red&color[]=green 

Come si può vedere, per un po 'Zio motivo nown Backbone.js è aggiungendo le parentesi quadre per i params URL, invece di avere color=green ho color[]=green

sto usando django-rest-framework nel lato server e so che posso fare una correzione hardcoded lì, ma preferisco conoscere la ragione logica perché sta accadendo e come posso risolverlo dal mio javascript.

risposta

17

Backbone utilizza jQuery.ajax sotto il cofano per la richiesta Ajax quindi è necessario utilizzare le opzioni traditional: true di usare "tradizionale" parameter serialization:

fruits = new FruitsCollection(); 
fruits.fetch({ 
    traditional: true, 
    data: {color: ['red', 'green']} 
}); 
+0

ha funzionato come previsto, questa è la risposta che volevo. Ma un'altra domanda è apparsa, come hai trovato questa opzione? Non riesco a vederlo nella documentazione. –

+1

Nella documentazione di backbone è descritto nel metodo 'fetch': http://backbonejs.org/#Collection-fetch che puoi passare in qualsiasi delle opzioni jQuery.ajax e' traditional' dalla documentazione jquery: http : //api.jquery.com/jQuery.ajax/ – nemesv

+0

Grazie mille !!!! – Matiishyn