ExtJS : comment envoyer une form au format JSON ?
Je viens de passer 4 heures à chercher comment envoyer, avec ExtJS, une forme au format JSON.
Ce qui suit ne fonctionne pas :
form.submit({ type: 'ajax', headers: { 'Content-Type': 'application/json' }, url: '/json/destination.php', jsonData: data, params: { mode: 'update' }, success: function(form, action) { /* ok !! */ }, failure: function(form, action) { /* gérer les erreurs */ } });
Si vous essayez d’utiliser la fonction « submit
» alors vous risquez, comme moi peut être, de ne pas y arriver.
La solution est :
- récupérer soi même les données via
getValues()
; - les encoder au format JSON ;
- les envoyer avec la méthode
Ext.Ajax.request()
.
Voici un exemple de code qui fonctionne :
var data = Ext.JSON.encode({ data: form.getValues(false) }); Ext.Ajax.request({ headers: { 'Content-Type': 'application/json' }, url: '/json/destination.php', method : 'POST', jsonData : data, params : { mode: 'update' }, success: function(form, action) { /* ok !! */ }, failure: function(form, action) { /* gérer les erreurs */ } });
J’ai perdu 4 heures là dessus, alors si je vous en fais gagner 3, n’oubliez pas de me « flattr » 😉