Debugger en Ajax/PHP

Eléphanteau du PHP | 10 Messages

23 mars 2011, 18:35

Bonjour,

Une question que certains d'entre vous se sont probablement déjà posé.

Avant, c'était simple de debugger une page PHP : quelques echo ou print_r judicieusement placés et on pouvait suivre pas à pas les évolutions des variables.
Maintenant, on commence à faire des pages appelées via Ajax. C'est à dire que la page sur le serveur ne fait plus d'affichage directement.

Comment faites-vous ? La seule solution que j'ai trouvée c'est que plutôt que des echo ou des print_r à l'écran, je fais des fwrite dans un fichier texte. Et je vais ouvrir le fichier à chaque exécution. Mais c'est lourdingue. Et ça ne permet pas de voir certaines erreurs.

Merci de votre réponse

ViPHP
ViPHP | 5462 Messages

23 mars 2011, 18:37

Firebug te suffit pas ?

devlop78
Invité n'ayant pas de compte PHPfrance

23 mars 2011, 19:56

Tu fais un alert(), lol ...

De toutes façons, Il faut bien que PHP puisse dire à JavaScript qu'il y a eu une erreur et que la valeur qu'il retourne n'est pas correct. Des fois, retourner NULL ne sera pas bon. tu peux donc imaginer discuter avec JavaScript en JSON, en lui envoyant plusieurs choses : un code erreur/succès, éventuellement un message erreur/succès, et les données vraiment utiles. Derrière ça, tu crées une classe qui va extraire ces données, et par exemple emettre une exception s'il trouve une erreur, etc ... En plus, si jamais ta page emet une FATAL ERROR, tu vas te retrouver avec des données corrompus. Si tu utilises JSON, le Fatal ERROR va empêcher le parsage du JSON, et tu pourras le gérer. tu peux donc aussi tout simplement faire : Code bien executé = on envoit un JSON, code mal executé = on envoie autre chose. A priori, même une valeur de retour vide peut cacher une erreur. Il faudrait donc la traiter tel quel, et ne considérer qu'une valeur n'est bonne que si elle respecte un format particulier. Arprès, envoyer des messages simples à javascript, ne révélant aucun fichier, etc, pour effectuer une alert() dans le cadre d'un débogage, et désactiver le alert() en production. S'il y a une erreur, le méchant qui voudrait lire le message se trouvera en face d'un message dont il ne peut rien faire. On peut aussi détecter l'adresse IP en php, et envoyer un message d'erreur si en débogage, et ne rien envoyer en production (mais ce sera considéré quand même comme une erreur ... et alors JavaScript pourra dire au client "Nous sommes désolés, une erreur inconnue a eue lieu"). bref, tout est possible, tout est imaginable ;)

ViPHP
xTG
ViPHP | 7331 Messages

24 mars 2011, 09:07

Pour ma part je débute mon code sans json ou autre format.
Je passe par de simples echo, ainsi dans un premier temps il est facile de debugguer car tout ce qui s'affiche côté serveur est retransmis à l'Ajax.
Et quand tout est au point j'implémente la méthode de transfert, json, xml ou autre.