Bonjour à tous,
Je viens vous voir car je cale sur un bout de code pourtant pas si compliqué...
Situation :
J'appelle via Ajax.Request une page PHP qui m'update une valeur dans une base et me renvoie une valeur à afficher dans un tableau (il s'agit en faire d'un tableau faisant du "In-Place Editing").
Voici ce que je me renvoie au format JSON :
format JSON défini grâce à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 { "formID":"123486354_info", "update":"test" }
Donc ces données sont toute simple et apparemment bien créées (tests effectués en appelant la page en direct).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 header('Cache-Control: no-cache, must-revalidate'); header('Content-type: application/json');
Voici le bout de code Javascript qui me permet d'envoyer la requête et de récupérer les infos voulues et updater mon tableau :
L'execution du Ajax.request est effectué correctement, les données sont envoyées à la page 'request/req_rh_gestion_info.php' qui fait bien son traitement et renvoie le fichier JSON correctement monté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $(selID).observe('change',function(id){ //AJAX Request creation var req = new Ajax.Request('request/req_rh_gestion_info.php',{ method: 'post', parameters: $('chgtForm').serialize() + '&selID=' + selID, onSuccess: function(r){ alert ('ok !'); rArray=r.responseText.evalJSON(); alert(rArray.formID + ' / ' + rArray.update); $(rArray.formID).update(rArray.update); }, onFailure: function(r) {alert('erreur de réception du JSON');} }); });
Maintenant, mon problème qui se situe dans le onSuccess:
- Si j'exécute ce code normalement, l'alerte 'ok !' (ligne 7) s'affiche mais le reste non => le evalJSON n'a pas l'air de fonctionner et ma page se recharge seule avec des données en GET (données correspondant au $('chgtForm').serialize() envoyé en entrée).
- Par contre, si je débug via Firebug en posant des temps d'arrêt sur les lignes 7 à 10, alors là je récupère correctement les données de l'evalJSON et tout se passe bien !
Donc je dois apparemment poser une tempo quelque par pour que l'evalJSON puisse se faire normalement mais je ne sais pas vraiment comment m'y prendre, et surtout j'aimerais savoir si c'est normal d'avoir un tel comportement ?
Bref, si vous pouviez m'éclairer, vous m'ôteriez une belle épine du pied...
Merci d'avance pour vos réponses, même non constructives
Partager