AJAX JQuery problème IF

Résolu
Bonjour,

Je vous présente mon problème:

J'ai essayer pour m'entraîner de faire un peut d'AJAX avec JQuery.

Lorsque je clique sur envoyer, la page de traitement doit envoyer 'pseudoExist', et cela fonctionne.
J'arrive à l'afficher comme ceci:
$(document).ready(function(){
   $("#submit").click(function(){
    $.post(
    'traitement.php',
    
    {
    pseudo : pseudo,
    password : password,
    mail : mail
    },
    
    function(data){
     alert(data);
                },
    'text'
    }
    );
   return false;
   });
  });

Mais dès que je rajoute un IF :
$(document).ready(function(){
   $("#submit").click(function(){
    $.post(
    'traitement.php',
    
    {
    pseudo : pseudo,
    password : password,
    mail : mail
    },
    
    function(data){
    if (data == 'pseudoExist'){
     alert(data);
    }
     },
    'text'
    }
    );
   return false;
   });
  });

L'alerte de fonctionne plus. Je ne sais pas de quoi cela vient, merci de m'aider. Sachant que en vérifiant dans l'inspecteur, la page traitement.php renvoie bien 'pseudoExist'.

6 réponses

  1. Bonjour !
    Tu est sûr que tu retourne exactement cette chaîne (pseudoExist) ? Sans espace ni code html ?
    Je ne vois pas vraiment pourquoi il ne ferait pas l'alerte sinon.
    (Je suppose que ton site n'est pas en ligne ? :/)
    1. La page traitement.php retourne, j'ai tout mis en commentaire pour la bdd :
      <?php
      echo 'pseudoExist';
      ?>
      
    2. Hum, tu a regarder l'encodage du fichier ? Au cas où tu aurait un p'tit BOM ?
    3. J'irai voir, je suis en cours là. merci de votre réponse
    4. Non tout est en sans UTF 8 sans bom
  2. Bonjour

    Je suppose que ton 'pseudoExist' renvoyé par le traitement.php est accompagné d'un caractère de fin de ligne.
    Peux-tu faire un alert(data.length) pour voir combien il y a de caractères ?
    1. Après examen plus poussé, le code que tu donnes est faux. Après 'text', il devrait y avoir une parenthèse droite ) qui correspond à l'ouverture $.post( . Toi tu as mis une accolade } . Ton premier code qui soi-disant marche ne marche pas en fait.

      Tu as peut-être quand même vraiment un problème de caractères de fin de ligne si tu as laissé des lignes vides après le ?> à la fin de traitement.php. C'est pour ça qu'il est recommandé de NE PAS mettre la balise ?> à la fin des fichiers php. Ça t'étonne ? C'est dans la doc (3e paragraphe)
      1. J'ai vérifié et remis les accolades correctement.
        Mais désormais, le traitement.php de se charge plus.
        je laisse tomber, merci de votre aide.
      2. Faut pas te décourager si facilement. D'autant que ça marche très bien chez moi, après cette correction. C'était une parenthèse qu'il fallait remettre correctement, pas une accolade.
      3. Oui j'ai remis cela.
        Mais maintenant le problème c'est quand je clique sur submit, la page traitement de se charge pas selon l'inspecteur, or je vois pas pourquoi.
      4. Peux-tu montrer ton code actuel ? Si tu as mal remis la parenthèse, le Javascript ne s'exécute pas, normal que la page traitement.php ne soit pas appelée.
      5. http://puu.sh/6wF2S.png
    2. Tu ne pourrais pas le coller en texte ? Un copier-coller d'image, ça ne donne pas grand-chose
      1. $(document).ready(function(){
        			$("#submit").click(function(){
        				$.post(
        				'traitement.php',
        				
        				{
        				pseudo : pseudo
        				password : password
        				mail : mail
        				},
        				
        				function(data){
        				if (data == 'pseudoExist'){
        					alert(data);
        					return false;
        				}
        				},
        				'text');
        				return false;
        			});
        		});
    3. Tu as vraiment :
          {
          pseudo : pseudo,
          password : password,
          mail : mail
          }

      Dans ton code ?
      Les variables pseudo, password et mail sont-elles définies ?
      1. Et les virgules entre pseudo, password et mail ont disparu ?
      2. Effectivement j'avais supprimer le code permettant de set ces variables. Mais en rajoutant $("#pseudo").val(); pour pseudo etc... le problème reste le même il me semble.
        <!DOCTYPE html>
        <html>
        <head>
        	<title>My website</title>
        	<link href="css/style.css" rel="stylesheet" type="text/css">
        	<meta charset="utf-8"> 
        	<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
        </head>
        
        <body>
        <div class="content">
        <div class="fill">
        	<div id="form">
        		<form method="post" action="#">
        		<fieldset>
        		<legend>Inscription</legend>
        		<div id="error">
        		</div>
        		<div id="sucess">
        		</div>
        			<input type="text" name="pseudo" id="pseudo" placeholder="Votre pseudonyme"><br>
        			<input type="password" name="pwd" id="pwd" placeholder="Votre mot de passe"><br>
        			<input type="password" name="confirm" id="confirm" placeholder="Confirmez le mot de passe"><br>
        			<input type="email" name="mail" id="mail" placeholder="Votre adresse e-mail"><br>
        			<input type="submit" id="submit" value="S'inscrire">
        		</fieldset>
        		</form>
        	</div>
        </div>
        </div>
        	
        	<!-- JS -->
        	
        	<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        	<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
        	<script type="text/javascript">
        		$(document).ready(function(){
        			$("#submit").click(function(){
        				$.post(
        				'traitement.php',
        				
        				{
        				pseudo : $("#pseudo").val();
        				password : $("#pwd").val();
        				mail : $("#mail").val();
        				},
        				
        				function(data){
        				if (data == 'pseudoExist'){
        					alert(data);
        					return false;
        				}
        				},
        				'text');
        				return false;
        			});
        		});
        		</script>
        
        </body>
        </html>
    4. {
        pseudo : $("#pseudo").val();
        password : $("#pwd").val();
        mail : $("#mail").val();
      }

      Les 3 éléments doivent être séparés par des virgules, pas des points-virgules.
      1. Merci tout fonctionne grâce à vous.
        Je vous suis reconnaissant !!!
      2. De rien.

        Sais-tu qu'il existe sur les navigateurs modernes des consoles de débogage qui t'indiquent les erreurs de javascript ? Ça t'évite de tourner en rond trop longtemps, c'est comme ça que j'ai trouvé tes erreurs.
      3. Puis-je avoir un nom s'il vous plaît ?
      4. Un nom de quoi ? Dans ce cas précis, je parle de Chrome que j'utilise, il a une console intégrée (F12 + onglet "console" ) et je suppose que les autres, Firefox et IE en ont aussi
      5. ah je croyais qu'il y avait un site.
        Et ils m'affichaient comme erreur seulement une fonction dépréciée de jquery