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

jQuery Discussion :

Test toujours faux dans un callback $.ajax [AJAX]


Sujet :

jQuery

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut Test toujours faux dans un callback $.ajax
    Bonjour à tous,

    Je sèche lamentablement...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <input type="button" id="b1" value="Je me connecte" />
     
    <script type="text/javascript">
    	$("#b1").click( function() {
    		$.ajax({url:"test.php",
    				dataType: "text",
    				success: function(retour){
    					if (retour == 'ab') 
    						alert("Ok : '" + retour + "'");
    					else
    						alert("Test faux : '" + retour + "'");
    					}
    		});
    	});
    </script>
    et mon fichier php :

    Pourquoi mon test est toujours faux ?
    Qu'est-ce que je fais comme erreur ?

    Merci pour vos idées

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    tu as un espace dans ton fichier php ou un retour ligne après ou un caractère parasite, bref ton fichier php ne te retourne pas juste "ab"


    teste ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    retour.indexOf('ab')>-1
    ensuite à toi de trouver d'où provient le caractère parasite ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    Merci de ta réponse.

    Je viens de tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    success: function(retour){
    	if (retour.indexOf('ab')>-1)
    		alert('Test : ' + retour.indexOf('ab'));
    	}
    }
    Il me retourne bien 0.

    Pour ce qui est du caractère parasite, j'ai bien cherché de ce côté là, mais jusqu'ici je n'ai rien trouvé.
    Je viens de tester autre chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php $r = 'ab';
    echo $r; ?>
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (retour == 'ab') 
    		alert("Ok : '" + retour + "'");
    	else
    		alert("Ne rien faire : '" + retour + "'");
    	}
    Test toujours faux.
    Mais si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php $r = 1;
    echo $r; ?>
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (retour == 1) 
    		alert("Ok : '" + retour + "'");
    	else
    		alert("Ne rien faire : '" + retour + "'");
    	}
    Le test est bon, et pour une valeur de 2 (dans le fichier php) le test est bien faux.
    Mais ce qui m'intéresse c'est de pouvoir retourner une chaîne de caractère.
    Y-a-t-il une méthode pour afficher les valeurs de retour en binaire ? Histoire de voir justement s'il n'y a pas de caractères CR/LF qui traînent.

    Merci à toi.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    1 est true en php ...



    que donne l'égalité absolue ?

    à mon avis tu dois avoir du BOM dans la réponse...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    En suivant tes conseils, j'ai 'enrichi' mon test de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    success: function(retour){
    	if (retour === 1) 
    		alert("Ok 1 : '" + retour + "'");
    	else if (retour === 2) 
    		alert("Ok 2 : '" + retour + "'");
    	else
    		alert("Ne rien faire : '" + retour + "'");
    	}
    en faisant 'varier' $r dans le fichier php de 1 à 3, le résultat est dans tous les cas : 'Ne rien faire'.

    Mes deux fichiers étant encodés en ANSI, je viens de les passer en UTF-8 sans BOM (avec notepad++) : cela ne change rien.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    le résultat est dans tous les cas : 'Ne rien faire'.
    Ca c'est normal... tu ne peux pas recevoir de données typées via HTTP, donc une comparaison stricte avec un Number ne pourra jamais être vraie...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    En résumé, les tests fonctionnent quand ce sont des valeurs numériques et non quand ce sont des chaines en retour.
    Je vais donc pouvoir m'en sortir pour mon projet en utilisant des valeurs numériques, mais ce n'est vraiment pas satisfaisant intellectuellement.
    J'aurais bien aimé trouver le pourquoi.

    Merci beaucoup de ton aide, et bonne journée.

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par SpaceFrog
    tu as un espace dans ton fichier php ou un retour ligne après ou un caractère parasite, bref ton fichier php ne te retourne pas juste "ab"
    La réponse a été donnée dès la première réponse
    Utilise $.trim() éventuellement.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    Ça marche effectivement avec $.trim()...
    Mais le mystère reste entier sur le caractère invisible.

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ça sent le BOM ...

    enregistre ton fichier php qui envoie la réponse en utf-8 sans BOM
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    Je l'ai déjà testé (voir plus haut) mais cela ne change rien...

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    peux tu nous montrer l'intégralité du fichier php de résponse ?

    tu es sur qu'il n'y a aucun espace ou saut de ligne avant ni après ton code php ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    Un comble : je viens du mal à répéter le dysfonctionnement !
    Voilà le code PHP :
    ...et en faisant un copier-coller ici, je me suis aperçu qu'il existait un espace après la fermeture de la balise PHP. (Le point symbolise cet espace)
    Mais si je le supprime cela marche :
    Mais que diable pourquoi echo récupère non seulement la chaine mais aussi cet espace. Pour moi c'est pas logique, puisqu'on est en dehors de l'interprétation du PHP.
    Et quand on affiche la longueur de la chaine retournée avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert('longueur chaine : ' + retour.length);
    il trouve bien 3 caractères (avec le premier code qui a l'espace) !

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    il recupère ce que le serveur envoie

    php interprète le code qui lui est destiné (entre balises)
    mais laisse passer tout le reste

    met juste

    dans ton fichier sans aucune balise ...
    le resultat sera le même que

    tu peux d'ailleurs mettre uniquement du code htmk dans une page php sans une ligne de php et l'appeler .php
    le code html sera envoyé au client .
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    ab seul en effet ça marche.
    N'empêche que dans ce fichier php il y aura du script avec différents calculs préalables. Et là, si je ne me trompe, il faut bien que j'encadre mon script avec les balises non ?
    L'assurance ne serait donc pas d'appliquer systématiquement un $.trim() sur toute chaine retournée, comme conseillé plus haut ?
    Sinon il reste toujours le risque de se récupérer un espace qui "traine"...

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    si tu ne mets pas de caractères en plus ...
    il n'y a aucune raison qu'il y en ait !

    Pour ce qui est de l'interprétation du php, comme sus dit le serveur n'interprètera que le contenu entre balisesc'est d'ailleurs leur rôle de borner le php et d'indiquer au serveur ce qu'il doit interpréter.
    Tout ce qui est hors balise est restitué tel quel.
    Si tu ne veux pas de caractères en plus ... n'en met pas !
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    Merci à vous deux pour cet échange très constructif pour moi.
    Car j'ai appris quelques subtilités bien importantes.

  18. #18
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    A titre d'exemple, si tu as l'habitude de commencer tes fichiers par un saut de ligne
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    // Code
    ?>
    alors ce saut de ligne sera rendu et comptera comme un caractère.
    Habituellement, ce n'est pas trop grave puisque le parseur HTML du navigateur ne tient pas compte des caractères blancs, mais des fois, comme tu t'en rends compte, c'est gênant !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/06/2012, 14h01
  2. [AJAX] Status dans une requete Ajax toujours nul
    Par Astarion dans le forum AJAX
    Réponses: 1
    Dernier message: 14/07/2010, 07h56
  3. Callback dans la fonction $.Ajax ?
    Par DrWilly dans le forum jQuery
    Réponses: 3
    Dernier message: 31/05/2009, 00h43
  4. Callback ajax dans une class
    Par TThieuMa dans le forum jQuery
    Réponses: 2
    Dernier message: 04/02/2009, 09h41
  5. [Système] Booléen toujours faux dans une fonction
    Par Jules.LT dans le forum Langage
    Réponses: 5
    Dernier message: 01/08/2007, 18h58

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