Problème AJAX
Résolu
TheBleedz
-
TheBleedz -
TheBleedz -
Bonsoir,
Voila je me lance dans le sombre univers de l'AJAX. J'ai commencé mon script hier mais j'ai déjà un soucis que j'arrive pas à comprendre. Ca fait 1h que je cherche le problème, j'espère trouver de l'aide ici.
J'ai essayer de faire propre pour que vous comprenez. Merci d'avance et bonne nuit à tous.
PS : Si je répond pas ce soir ces que je dors ^^ Je reviendrais demain.
Voici le code HTML de ma page INDEX.php
Et la fonction AJAX qui me permet d'envoyé les informations vers la page de traitement PHP :
Et enfin le code PHP du traitement de la page INDEX :
Et voici l'erreur qu'il m'affiche :
Voila je me lance dans le sombre univers de l'AJAX. J'ai commencé mon script hier mais j'ai déjà un soucis que j'arrive pas à comprendre. Ca fait 1h que je cherche le problème, j'espère trouver de l'aide ici.
J'ai essayer de faire propre pour que vous comprenez. Merci d'avance et bonne nuit à tous.
PS : Si je répond pas ce soir ces que je dors ^^ Je reviendrais demain.
Voici le code HTML de ma page INDEX.php
<div id="menu_1"> <fieldset> <legend>Ajout d'une nouvelle catégorie</legend> <p class="mef_form"> <label>Nom de votre nouvelle catégorie :</label><input type="text" name="nouvelle_categorie" id="nouvelle_categorie" /></p><br /> <label> </label><input type="button" value="Ajouter" onclick="nom=document.getElementById('nouvelle_categorie').value ; ajouter_cat(nom)"/><br /> </fieldset> <div id="reponse_1"></div> </div>
Et la fonction AJAX qui me permet d'envoyé les informations vers la page de traitement PHP :
function ajouter_cat(nom) { var xmlhttp = getHTTPObject(); var element1 = document.getElementById('reponse_1'); element1.innerHTML = "Patienter pendant la création de votre catégorie"; xmlhttp.open("GET", 'ajouter_categorie.php?nouvelle_categorie='+nom); vider_cache(xmlhttp); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { element1.innerHTML = xmlhttp.responseText; } } xmlhttp.send(null); }
Et enfin le code PHP du traitement de la page INDEX :
<?php // fonction permettant de supprimer les caractères spéciaux ainsi que les espace accents... function epurer_nom($nom_cat) { // remplacement des accents par leur lettre équivalente $nom_cat=strtr($nom_cat,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ" ,"AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"); // suppression des espaces et passage en minuscule $nom_cat=strtolower(trim($nom_cat)); // remplacement de tous les caractères non alpha numérique par "_" $nom_cat=ereg_replace("[^0-9a-z_]","",$nom_cat); // on retourne la chaine épurer return ($nom_cat); } if (isset($_GET['nouvelle_categorie'])){ // on ecchape tous les caractère spéciaux //$categorie = htmlentities($_GET['nouvelle_categorie'],ENT_QUOTES); $categorie = $_GET['nouvelle_categorie']; // on va vérifier que la nouvelle catégorie n'existe pas déja if (!is_dir("photo/$categorie/") && !is_dir("photo/$categorie/mini/")){ // puis on créer les 2 dossiers, qui contiendront les originaux et les miniatures // avec tous les droits ( écriture, lecture , suppression ) @mkdir("photo/$categorie/",0777); @mkdir("photo/$categorie/mini/",0777); // on fait une vérification sur la création pour le retour à l'utilisateur if (is_dir("photo/$categorie/") && is_dir("photo/$categorie/mini/")){ echo "<p>Votre nouvelle catégorie : $categorie, a bien été ajouté</p>"; } else{ echo "<p>Une erreur est survenu durant la création de votre catégorie </br> Veuillez contacter votre administrateur</p>"; } } else{ echo "<p>Le nom de votre catégorie : $categorie, est déja utilisé !</p>"; } } ?>
Et voici l'erreur qu'il m'affiche :
Votre nouvelle catégorie : $categorie, a bien été ajouté "; } else{ echo " Une erreur est survenu durant la création de votre catégorie Veuillez contacter votre administrateur "; } } else{ echo " Le nom de votre catégorie : $categorie, est déja utilisé ! "; } } ?>
4 réponses
une petite modif qui n'a rien a voir avec ton pb, mais c'est dommage de mettre des instructions JS dans le onclick alors que tu as une fonction JS dans laquelle tu peux la mettre:
pour ton pb on a l'impression que le </ du </p> est interprété comme un tag de fin de php il me semble avoir déja vu un pb comme ça sur le forum.
Voir encodage de ton fichier php aNSI ou UTF8 ?
<script type="text/javascript"> function ajouter_cat(id) { var nom=document.getElementById(id).value ; var xmlhttp = getHTTPObject(); var element1 = document.getElementById('reponse_1'); element1.innerHTML = "Patienter pendant la création de votre catégorie"; xmlhttp.open("GET", 'ajouter_categorie.php?nouvelle_categorie='+nom); vider_cache(xmlhttp); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { element1.innerHTML = xmlhttp.responseText; } } xmlhttp.send(null); } </script> <div id="menu_1"> <fieldset> <legend>Ajout d'une nouvelle catégorie</legend> <p class="mef_form"> <label>Nom de votre nouvelle catégorie :</label><input type="text" name="nouvelle_categorie" id="nouvelle_categorie" /></p><br /> <label> </label><input type="button" value="Ajouter" onclick="ajouter_cat('nouvelle_categorie');"/><br /> </fieldset> <div id="reponse_1"></div> </div>
pour ton pb on a l'impression que le </ du </p> est interprété comme un tag de fin de php il me semble avoir déja vu un pb comme ça sur le forum.
Voir encodage de ton fichier php aNSI ou UTF8 ?
Bonjour,
Tout d'abord merci de votre réponse et excusez-moi de ne pas avoir répondu plus vite.
J'ai corrigé mon code avec le votre mais ne fonctionne toujours pas. Mon code PHP et en UTF8. J'avais oublié de rajouter cette ligne dans le sujet :
Je comprend vraiment pas, tout devrais marché normalement =/ Mais parement on peut voir que ces un problème soit du coter HTML (JS) qui envoie la variable ou soit du AJAX qui envoie la variable sur la bonne page. Car le PHP ne c'est pas donnée de valeur à la variable $categorie. Enfin, je vais m'y mettre a fond là dessus ce soir, pour essayer de régler le problème aujourd'hui.
Merci a vous et bonne soirée.
Tout d'abord merci de votre réponse et excusez-moi de ne pas avoir répondu plus vite.
J'ai corrigé mon code avec le votre mais ne fonctionne toujours pas. Mon code PHP et en UTF8. J'avais oublié de rajouter cette ligne dans le sujet :
header ('Content-type: text/html; charset=utf-8');
Je comprend vraiment pas, tout devrais marché normalement =/ Mais parement on peut voir que ces un problème soit du coter HTML (JS) qui envoie la variable ou soit du AJAX qui envoie la variable sur la bonne page. Car le PHP ne c'est pas donnée de valeur à la variable $categorie. Enfin, je vais m'y mettre a fond là dessus ce soir, pour essayer de régler le problème aujourd'hui.
Merci a vous et bonne soirée.
quand je parlait d'encode c'est ce que tu vois dans ton editeur par le menu encodage lorsque que tu edite le fichier php