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)
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>
<?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 ...
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.
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>
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.
× 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.
N'oubliez pas d'activer les erreurs PDO.