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

JavaScript Discussion :

[AJAX] résultat différent en local et sur hébergeur


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut [AJAX] résultat différent en local et sur hébergeur
    Bonjour,

    Voilà, j'ai un script ajax qui vérifie en direct si le pseudo est déjà ou non utilisé. et tout fonctionne bien en local.

    exemple pseudo existant = titanique et je ne fais appel à ajax qu'à partir du 5eme caractere donc en local,
    titan, titani, titaniq, titaniqu, me renvoi 1 pour "pseudo libre" et titanique me renvoi 2 pour "pseudo pris" mais sur le site, titanique reste valable... ?

    J'ai pensé à un temps de réponse trop long ?
    Suis pas un pro de l'informatique mais le code fonctionne .. enfin en local...

    ---- Code ajax ---
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function ajax(pseudo)
    {
     
    	var xhr = null; 
     
    	if(window.XMLHttpRequest) // Firefox et autres
    	   xhr = new XMLHttpRequest(); 
    	else 
    		if(window.ActiveXObject)
    		{ // Internet Explorer 
    			try { xhr = new ActiveXObject("Msxml2.XMLHTTP");} 
    			catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP");}
    		}
    		else 
    		{ // XMLHttpRequest non supporté par le navigateur 
    	  	alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	   	xhr = false; 
    		}
        //on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function() { alert2_ajax(xhr);};
        //on appelle le fichier de reponse
    			xhr.open("GET", "../includes/verifpseudo.php?pseudo="+escape(pseudo), true);
        xhr.send(null);		
    }
     
    function alert_ajax(xhr)
    {
        if (xhr.readyState==4) 
        {
     
          document.getElementById('pseudobox').value = xhr.responseText;
        }
    }
    --- Code php ---
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?
    // VERIFICATION EN LIVE DU PSEUDO
     
    $result2 = mysql_query("SELECT pseudo FROM t_users WHERE pseudo='".$_GET["pseudo"]."'");
    if (mysql_num_rows($result2) >= 1)
    echo "2";//"Ce pseudo est déjà utilisé";
    else
    echo "1";//"Ce pseudo est libre";
    ?>
    --- code javascript ---
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    function verifPseudo(pseudo)
    {
      ok = Valide_char(pseudo,'abcdefghijklmnopqrstuvwxyz0123456789-_');
      if (ok !="oui") return;
      if(pseudo.value != '')
      {
        if(pseudo.value.length<5)
        {
          writediv('<span style="color:#cc0000"> <b>'+ '&nbsp;&nbsp;' +pseudo.value+' :</b> ce pseudo est trop court</span>');
         document.getElementById("pseudo_temp").value = "Pseudo trop court - minimum requis = 5 caractéres";
        }
       else 
       {
         ajax(pseudo.value);
         if(document.getElementById("pseudobox").value == 2)
         {
           writediv('<span style="color:#cc0000"><b>'+pseudo.value+' :</b> ce pseudo est dejà pris</span>');
           document.getElementById("pseudo_temp").value = "Ce pseudo est déjà utilisé, veuillez en choisir un autre.";
         }
         else 
         {
           writediv('<span style="color:#1A7917"><b>'+pseudo.value+' :</b> ce pseudo est libre</span>');
           document.getElementById("pseudo_temp").value = "";
         }
      }
    }
    else
      writediv('<span style="color:#cc0000">&nbsp;</span>');
    }
    Si quelqu'un à une idée....

    et j'ai aussi un autre blème mais un à la fois...

    Merci de vos réponses

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 412
    Par défaut
    En esperant ne pas avoir sauté une étape dans ton code, pourrait tu nous donner l'endroit ou tu appel ta fonction ajax

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    ben c'est dans la function javascript verifpseudo(pseudo) ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else 
       {
         ajax(pseudo.value);
         if(document.getElementById("pseudobox").value == 2)
    Mais je pense sérieusement que c'est une question de temps de réponse, de plus j'ai mis pour tester et voir les reponses
    // header("Cache-Control: no-cache, must-revalidate");
    // header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

    donc j'ai le fichier réponse dans le temp et quand je recommence alors ca fonctionne mais je dois le faire deux fois ....

  4. #4
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    $result2 = mysql_query("SELECT pseudo FROM t_users WHERE pseudo='".$_GET["pseudo"]."'");
    Bon pour ce qui est de ta requète, quand tu compares des strings le mieux est d'utiliser like et non = .

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par kstou2001 Voir le message
    Bon pour ce qui est de ta requète, quand tu compares des strings le mieux est d'utiliser like et non = .
    Absolument pas !
    Pour un test de pseudo, c'est bien l'égalité stricte qu'il faut utiliser.

    @kstou2001 > Pour info, LIKE est l'équivalent de "contient la chaine", ce qui ne serait pas du tout approprié ...

    @chelguera > Problème de cache. Il faut que dans ta page qui génère la réponse Ajax, tu ajoutes les header "no-cache" avant de générer la réponse elle-même (à toi de trouver la syntaxe : PHP c'est pas mon truc )

    A+

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Bonjour,
    Absolument pas !
    Pour un test de pseudo, c'est bien l'égalité stricte qu'il faut utiliser.

    @kstou2001 > Pour info, LIKE est l'équivalent de "contient la chaine", ce qui ne serait pas du tout approprié ...

    @chelguera > Problème de cache. Il faut que dans ta page qui génère la réponse Ajax, tu ajoutes les header "no-cache" avant de générer la réponse elle-même (à toi de trouver la syntaxe : PHP c'est pas mon truc )

    A+
    Bon,
    - je vais mettre = car je vais changer la requête en = user_id et non pseudo
    - le no-cache donne exactement le même résultat, je l'ai mit en commentaire pour voir les résultats...
    sinon en php ca donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    header("Cache-Control: no-cache, must-revalidate");  
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
    .....
    ?>
    Mais cela n'arrange toujours pas mon problème
    et j'espère que tout le monde est réveillé...

    Amicalement carlos

  7. #7
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    autant pour moi! jdevais pas etre très bien reveillé ce matin.
    J'avais pas fais gaffe.

    L'erreur est humaine! mais une erreur comme la mienne peut couter cher

    Le pire c'est que pour une authentificaton j'utilise le = car on recherche une identité parfaite.

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

Discussions similaires

  1. Encodage différent en local et sur serveur
    Par toufik135 dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 25/05/2015, 20h22
  2. Comportement différent en local et sur serveur
    Par CinePhil dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/03/2012, 15h41
  3. [SimpleXML] 3 résultats différents sur 3 hébergeurs
    Par elcoyotos dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/01/2012, 08h15
  4. [CR 2008] Rendu différent en local et sur serveur
    Par ftpcrazy dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/11/2009, 13h30
  5. Polices différentes en local et sur mon hébergement
    Par flaydeer dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 20/06/2007, 10h14

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