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] onChange pas assez fonctionnel


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut [AJAX] onChange pas assez fonctionnel
    Bonjour,

    bon, mon problème est une suite de l'ancien problème que j'avais eu (topic dessous dans la liste).
    En fait, j'ai un champ input de type text qui contiendra un mail. Quand je tape quelque chose dans ce champ, s'affiche dessous une liste de propositions correspondantes à ce que j'ai tapé (autocomplétion).

    Sur le onChange de ce champ, j'appelle une fonction qui m'affichera les détails correspondants à ce mail.
    Le problème est que la fonction se lance dès que je sélectionne un choix dans la liste (normal jusque là), mais elle ne prend pas en compte le choix que j'ai fait : juste ce que j'ai tapé auparavant.

    Un petit exemple :
    Champ input : info@
    Liste qui s'affiche dessous : info@truc.fr, info@machin.fr, info@bidule.fr ...
    Je clique sur info@truc.fr
    Et là je devrais avoir les infos correspondantes à info@truc.fr

    Or ma fonction cherche les infos correspondantes uniquement à info@ .

    J'ai testé en mettant onSelect, onBlur, onKeyUp, onKeyPress. Mais ça ne fonctionne pas.

    Voici le champ avec appel à la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id='liste'>
            <input type='text' class=d name='reclogm' id='reclogm' value='$reclogm' style='width:250px;' onChange="ajaxinfo();">
    </div>
    Et ma fonction ajaxinfo() :
    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
     
    function ajaxinfo() 
    	{	  
    	  var ajaxin = document.getElementById("reclogm").value;
    	  http.open("GET", url + escape(ajaxin), true);
    	  http.onreadystatechange = handleHttpResponse;
    	  http.send(null);
    	}
     
     
    	function handleHttpResponse()
    	{
      		if (http.readyState == 4) 
      		{
    		    document.getElementById('info').style.display="block";
    		    var response = http.responseText;
    		    document.getElementById('info').innerHTML = response; 
        	}
    	}
    Dans le div 'info' il n'y a rien, juste que j'affiche ma requête à l'intérieur.

    Et ma requête :
    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
     
    $ref = $_REQUEST['recherche'];
    $explo = explode("@",$ref);
    $arg = $explo[1];
    $tabinfo[] = array(labels => ",Login,Destination");
    $SQLinfo = "SELECT source,destination FROM emails WHERE source LIKE '%$ref%'";
    $Q = dbiDoBD($SQLinfo);
    $i=1;
    while ($R = dbiFetch($Q))
    {
    	$tabinfo[$i] = array(descD => $i,
    				valC1 => $R['source'],
    				val2  => $R['destination']
    				);
    	$i++; 
    }
    Serait-ce le explode qui pose problème ? Si je l'enlève, apparement j'obtiens les bons résultats (mais je suis obligée de faire la requête que sur la seconde partie de l'email, ce qu'il y a après l'@).

  2. #2
    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 baggie Voir le message
    Serait-ce le explode qui pose problème ?
    j'aurais tendance à dire oui ...
    Ne suffit-il pas de protéger le caractère "@" dans la requête SQL ?

    A+

  3. #3
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Protéger, c'est-à-dire ? Ne pas le mettre dans le '%@$arg%' ? (si c'est ça, ça n'a rien changé).

    Je suppose que pour ne faire la recherche que sur la partie après le @ du mail, il n'y a que l'explode de possible ?

  4. #4
    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
    Citation Envoyé par baggie Voir le message
    Protéger, c'est-à-dire ?
    En SQL, normallement c'est en doublant le caractère (\ en JS).
    Pour insérer une simple quote dans une chaine (la simple quote étant le délimiteur de chaine) : 'Protection d''une simple quote'

    => essaye de doubler le @ :@@

    Mais si ça fonctionne déjà comme ça ....

    A+

  5. #5
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Ca ne fonctionne pas :/

    Si une fois que j'ai sélectionné un mail, que les infos se sont affichées (donc infos non convenables), mais que là je retouche au mail en supprimant par exemple le 'fr' à la fin, alors là il m'affichera les infos que je veux. Mais bon, ça n'est pas comme ça qu'il faudrait que ça fonctionne :s

  6. #6
    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
    Ta liste est-elle déroulante ou pas (pas = toutes les lignes affichées sans déroulement) ?

    A+

  7. #7
    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
    Citation Envoyé par baggie Voir le message
    mais que là je retouche au mail en supprimant par exemple le 'fr' à la fin, alors là il m'affichera les infos que je veux.
    C'est donc bien que tu récupères l'@ finale dans l'input text après choix dans la liste ?

    Et c'est bien la value de l'input qui est actuellement prise pour aller chercher les infos dans la bdd, non ?

    En tous cas, c'est ce que dis ton code ...

    A+

Discussions similaires

  1. [AJAX] settimeout qui attend pas assez
    Par zooffy dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 11/01/2007, 10h52
  2. Groupbox pas assez dynamique
    Par gdpasmini dans le forum Windows
    Réponses: 6
    Dernier message: 31/03/2006, 22h33
  3. onChange pas déclanché sur une action javascript ?
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/06/2005, 16h32

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