IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] serialize et xml


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut [AJAX] serialize et xml
    Dans mon site web, j'utilise quelque peu la technologie ajax afin de vérifier les champs d'un formulaire dès le onBlur. Pour cela, je suis parti du cours http://siddh.developpez.com/articles/ajax/.

    La méthode ajax appelle un script php qui retourne une réponse xml. Or ce script php peut attraper une exception et je souhaiterai faire remonter cette exception. Pour cela, j'utilise la fonction serialize() de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try {
    	...
    }
    catch (Exception $exception) {
    	$response = "<?xml version=\"1.0\" ?>";
    	$response .= sprintf("<response><message type=\"exception\">");
    	$response .= sprintf("<serializedException>%s</serializedException>", serialize($exception));
    	$response .= sprintf("</message></response>");
    	header('Content-Type: text/xml');
    	echo $response;
    }
    Mais la réponse ajax n'arrive jamais, et si je regarde la console d'erreur firefox, elle m'indique que le xml est mal formé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" ?><response><message type="exception"><serializedException>O:12:"Exception":7:{s:10:"�*�message";s:7:"dommage";s:17:"�Exception�string";s:0:"";s:7:"�*�code";i:0;s:7:"�*�file";s:41:"/var/www/script.php";s:7:"�*�line";i:22;s:16:"�Exception�trace";a:0:{}s:19:"�Exception�previous";N;}</serializedException></message></response>
    Je pense qu'il s'agit des caractères spéciaux "�". Aussi, quelqu'un saurait-il comment faire pour que le xml soit bien formé et qu'il soit déserialisable à l'autre bout de la chaine ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut
    J'ai finalement trouvé la solution à ce problème spécifique. Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $response .= sprintf("<serializedException>%s</serializedException>", serialize($exception));
    il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $response .= sprintf("<serializedException>%s</serializedException>", base64_encode(serialize($ajaxException)));
    et en bout de course, il faut donc faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unserialize(base64_decode(serializedException));
    Et voilà un problème résolu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] 2 reponses XML/txt en une seule requete AJAX
    Par seb0634 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/07/2007, 12h45
  2. [AJAX] obtenir du xml a partir du mode texte(apres une retouche)
    Par delfare dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/07/2007, 10h45
  3. [AJAX] xhr.response.XML has no property
    Par Khrysby dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/11/2006, 17h50
  4. Ajax : envoie de .XML
    Par grosecret dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 09/10/2006, 11h48
  5. [ajax] Problème transformation XML/XSL
    Par LoK dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/08/2006, 18h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo