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 » 😉