Partage
  • Partager sur Facebook
  • Partager sur Twitter

[xAjax] Invalid response XML

    4 juillet 2011 à 17:54:48

    Bonjour à tous !

    J'ai décidé de poster ce message après avoir écumé internet et ses divers moteurs de recherche ...

    Je rencontre un problème avec xAjax pour le traitement de mes formulaires. Je souhaite en effet vérifier si un champ est vide ou si le contenu est déjà présent dans ma base SQL et indiquer sous le champ cette information sans recharger le formulaire.

    J'ai donc suivi le tutoriel du SdZ (merci !).

    Ayant activé le mode debug de xAjax, je me trouve face à cette erreur : (je copie le xajax debug output)

    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    ERROR: ResponseReceived: Invalid response XML: The response contains an unexpected tag or text: {data}.
    
    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    RECEIVED [status: 200, size: 109 bytes, time: 48ms]:
    
    <?xml version="1.0" encoding="utf-8" ?>
    <xjx>
    <cmd cmd="as" id="test2" prop="innerHTML">Sblabla</cmd>
    </xjx>
    
    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    SENT [39 bytes]
    
    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    SENDING REQUEST
    
    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    CALLING: 
    xjxfun: form_is_empty
    URI: 
    http://localhost/...
    
    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    POST: xjxfun=form_is_empty
    &xjxr=1309794178881
    
    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    INITIALIZING REQUEST OBJECT
    
    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    PREPARING REQUEST
    
    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    PROCESSING PARAMETERS [0]
    
    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    INITIALIZING REQUEST
    
    Mon Jul 04 2011 17:42:58 GMT+0200 (CEST)
    
    STARTING XAJAX REQUEST


    Sur d'autres forums où cette erreur est traitée, ils indiquent que cela peut venir de caractères non supportés par le format xml dans le code html renvoyé par le serveur.

    Je vous livre donc mon code, que j'ai relu environ une centaine de fois :

    header.php
    <?php
    //On inclut d'abord les constantes.
    include('../includes/includes_constants.php');
    
    //On inclut les fonctions
    include('../functions/functions_design.php');
    include('../functions/functions_bdd.php');
    include('../functions/functions_divers.php');
    include('../functions/functions_formulaires.php');
    
    //Lancement de xajax pour les formulaires.
    //DEBUT XAJAX
    require_once('../modules/xajax_core/xajax.inc.php');
    $xajax = new xajax(); // On initialise l'objet xajax.
    $xajax->configure('debug', true);
    $xajax->configure('javascript URI', CHEMIN_MODULES); //pour aider xajax à savoir où il se trouve !
    //Les fonctions php à enregistrer pour xajax.
    $xajax->register(XAJAX_FUNCTION, 'form_is_empty'); //pour l'instant, une simple fonction de test
    $xajax->processRequest(); // Fonction qui va se charger de générer le Javascript, à partir des données que l'on a fournies à xAjax.
    //FIN XAJAX
    
    //Connexion au serveur mysql
    server_connect();
    ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    	<link rel="icon" type="image/png" href="<?php echo FAVICON; ?>" />
    	<title><?php echo TITRE_SITE; ?></title>
    	<?php
    	load_css(array('all'));
    	$xajax->printJavascript(); //générer le javascript xajax
    	?>
    </head>
    


    Un exemple de formulaire à traiter avec xAjax.
    <form method="post" action="javascript:void(null);">
    <input type="text" name="pseudo" id="pseudo" value="Login" size="15" maxlength="15" onFocus="javascript:if(this.value=='Login') { this.value='' }" />
    <div id="test2"></div>
    <input type="password" name="pseudo" id="pseudo" value="Password" size="15" maxlength="15" onFocus="javascript:if(this.value=='Password') { this.value='' }" />
    <input type="submit" value="Connexion" onClick="xajax_form_is_empty();" />
    <br /><input type="checkbox" name="auto_connect" id="auto_connect" /> <label for="auto_connect">Connexion automatique</label>
    </form>
    


    Ma fonction :
    <?php
    function form_is_empty() {
    	$reponse = new xajaxResponse();
    	$reponse->assign('test2','innerHTML',"blabla");
    	return $reponse;
    }
    ?>
    


    Je n'y comprends rien. J'avais déjà réussi à utiliser xAjax sur un ancien projet. Et là, plus rien ... Je viens de passer mes nerfs dessus donc maintenant je vous laisse passer les vôtres ... :p

    D'avance merci !
    • Partager sur Facebook
    • Partager sur Twitter
      11 juillet 2011 à 11:55:25

      Bon, je remonte le sujet.

      Apparemment, d'après les problèmes similaires rencontrés dans l'utilisation de xAjax, il s'agirait de blancs (whitespace) présents dans les fichiers inclus lus par xAjax.

      Je suis donc passé sous Eclipse pour pouvoir visualiser les blancs et tabulations. Après une n-ième relecture de l'ensemble des fichiers inclus dans le projet, je n'ai trouvé aucun problème apparent ...

      J'ai juste une petite hésitation. Avec Firebug, je vois qu'une ligne blanche apparaît entre les scripts générés par xAjax et ma fonction bidon (xajax_is_empty) :

      <script type="text/javascript" charset="UTF-8">
      /* <![CDATA[ */
      window.setTimeout(
      function() {
      var scriptExists = false;
      try { if (xajax.isLoaded) scriptExists = true; }
      catch (e) {}
      if (!scriptExists) {
      alert("Error: the xajax Javascript component could not be included. Perhaps the URL is incorrect?\nURL: http://localhost/workspace/thiercelieux/modules/xajax_js/xajax_core.js");
      }
      }, 2000);
      /* ]]> */
      </script>
      <script type="text/javascript" charset="UTF-8">
      /* <![CDATA[ */
      window.setTimeout(
      function() {
      var scriptExists = false;
      try { if (xajax.debug.isLoaded) scriptExists = true; }
      catch (e) {}
      if (!scriptExists) {
      alert("Error: the xajax.debug Javascript component could not be included. Perhaps the URL is incorrect?\nURL: http://localhost/workspace/thiercelieux/modules/xajax_js/xajax_debug.js");
      }
      }, 2000);
      /* ]]> */
      </script>
      
      <script type='text/javascript' charset='UTF-8'>
      /* <![CDATA[ */
      xajax_form_is_empty = function() { return xajax.request( { xjxfun: 'form_is_empty' }, { parameters: arguments } ); };
      /* ]]> */
      </script>
      


      Je ne sais pas si ça a son importance mais ça me paraît louche.

      Bon, quelqu'un peut m'aider ? :)

      Merci d'avance.
      • Partager sur Facebook
      • Partager sur Twitter
        11 juillet 2011 à 16:30:29

        Salut,
        J'ai un peu regardé ton code (seulement côté xAjax) et je n'ai rien vu de spécial. As-tu essayé en enlevant tout ce qui n'est pas indispensable ?
        <?php
        //On inclut d'abord les constantes.
        include('../includes/includes_constants.php');
        
        //On inclut les fonctions
        include('../functions/functions_design.php');
        include('../functions/functions_bdd.php');
        include('../functions/functions_divers.php');
        include('../functions/functions_formulaires.php');
        
        //Lancement de xajax pour les formulaires.
        //DEBUT XAJAX
        require_once('../modules/xajax_core/xajax.inc.php');
        $xajax = new xajax(); // On initialise l'objet xajax.
        //Les fonctions php à enregistrer pour xajax.
        $xajax->register(XAJAX_FUNCTION, 'form_is_empty'); //pour l'instant, une simple fonction de test
        $xajax->processRequest(); // Fonction qui va se charger de générer le Javascript, à partir des données que l'on a fournies à xAjax.
        //FIN XAJAX
        
        ?>
        
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
        <head>
        	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
        	<link rel="icon" type="image/png" href="<?php echo FAVICON; ?>" />
        	<title><?php echo TITRE_SITE; ?></title>
        	<?php
        	$xajax->printJavascript(); //générer le javascript xajax
        	?>
        </head>
        

        <input type="submit" value="Connexion" onClick="xajax_form_is_empty();" />
        

        Comme ça tu regardes si tu récupères quelque chose dans ton <div> et tu ajoutes les autres parties de code.
        Tu pourras peut-être identifier le problème ainsi.
        • Partager sur Facebook
        • Partager sur Twitter

        [xAjax] Invalid response XML

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown