vendredi 18 janvier 2013

JSON : Retourner une variable d’état à javascript


En complément avec l’arobase @, vous pouvez utiliser une chaine de retour qui spécifiera comment s’est passé l’exécution en arrière plan de votre script.
Personnellement j’ai l’habitude de stocker la chaîne de retour dans le tableau JSON à la clé « state » du tableau retourné. Lorsqu’il n’y a pas d’erreur, je retourne simplement « ok », sinon la chaine d’erreur à afficher. Voici un petit script d’exemple :
Appel ajax avec jQuery :

  1. $.ajax({  
  2.     url: 'ajax/script.php',  
  3.     success: function(data) {  
  4.         /* On regarde l'état de la clé state */  
  5.         if(data.state == "ok") {  
  6.             /* Ici vos traitements si tout fonctionne bien */  
  7.         }  
  8.         else {  
  9.             /* Ici le message d'erreur si une erreur connue est survenue */  
  10.             alert("Attention, une erreur est survenue pendant la suppression du fichier, erreur retournée : "+data.state);  
  11.         }  
  12.     }  
  13.     error: function() {  
  14.         /* Comme précédemment, ici les erreurs non connues (erreur de connexion, chaine JSON explosée etc...) */  
  15.         alert("Attention, une erreur est survenue lors du chargement ajax.");  
  16.     }  
  17. });  

Page PHP appelée par ajax :

  1. // On n'affiche pas les erreurs générées par PHP pour ne pas exploser la chaine JSON  
  2. error_reporting(0);  
  3.   
  4. // On initialise le tableau JSON qui sera retourné en ajax  
  5. $json = array();  
  6.   
  7. // On tente la suppression du fichier et on retourne le résultat dans la clé "state"  
  8. if(@unlink("document/fichier.txt")) {  
  9.     $json['state'] = "Impossible d'accéder au fichier document/fichier.txt pour la suppression";  
  10. }  
  11. else {  
  12.     $json['state'] = "ok";  
  13. }  
  14.   
  15. // On affiche la chaine JSON  
  16. echo json_encode($json);

Dans notre exemple, le script PHP tentera de supprimer un fichier. S’il échoue, ajax retournera une erreur dans le tableau à la clé « state » et javascript affichera l’erreur.

Aucun commentaire:

Enregistrer un commentaire