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 :

xmlhttprequest


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Par défaut xmlhttprequest
    Bonjour,

    J'ai developpe une ptite fonction javascript / php pour renseigner un champ texte avec le nom de la ville, en fonction du code postal.
    Quand un code postal correspond a plusieurs villes, j'affiche une liste a cote du formulaire

    Exemple avec 97400 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <a name="bellepierre"></a>
    <a href="#bellepierre" onclick="document.getElementById('client[ville]').value='Belle pierre'">Belle pierre</a>
    <br>
    <a name="lebrule"></a>
    <a href="#lebrule" onclick="document.getElementById('client[ville]').value='Le brule'">Le brule</a>
    <br>
    <a name="stdenis"></a>
    <a href="#stdenis" onclick="document.getElementById('client[ville]').value='St denis'">St denis</a>
    <br><a name="stfrancois"></a>
    <a href="#stfrancois" onclick="document.getElementById('client[ville]').value='St francois'">St francois</a>

    ca ca marche bien.. on clique sur la ville et ca renseigne le champ en question..

    Par contre, quand j'ai une seule correspondance, j'aimerais bien que ce soit rempli directement donc j'ai tenté ce genre de choses :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="text/javascript">
    document.getElementById('client[ville]').value='Paris 01';
    </script>
    mais forcement, ca ne marche pas.. le code n'est pas executé...
    Vous avez des idees sur comment je pourrais faire ca ??

    Merci de votre aide, par avance !

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut Re: xmlhttprequest
    Citation Envoyé par zevince
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="text/javascript">
    document.getElementById('client[ville]').value='Paris 01';
    </script>
    mais forcement, ca ne marche pas.. le code n'est pas executé...
    Vous avez des idees sur comment je pourrais faire ca ??
    Retourne le code JS uniquement (sans les balises script) et fais un eval sur le texte retourné.

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    comment ça? qu'est-ce qui ne marche pas? tu peux nous montrer ton source?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Par défaut
    Bon, je vais essayer de m'expliquer mieux...

    d'un coté, le formulaire et le javascript suivant :

    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
     
    function verifVille (cp)
    {
    	if(cp.length == 5)
    	{
    		texte = file('http://**********/scripts/V2/ajax/VilleCp.php?cp='+escape(cp))
    		writedivcp(texte);
    	}
     
    }
     
    function file(fichier)
         {
         if(window.XMLHttpRequest) // FIREFOX
              xhr_object = new XMLHttpRequest();
         else if(window.ActiveXObject) // IE
              xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
         else
              return(false);
         xhr_object.open("GET", fichier, false);
         xhr_object.send(null);
         if(xhr_object.readyState == 4) return(xhr_object.responseText);
         else return(false);
         }
     
    function writedivcp(texte)
    	{
         document.getElementById('VilleCp').innerHTML = texte;
         document.getElementById('VerifClient').style.display='none';
         document.getElementById('VilleCp').style.display='block';
    	}

    et de l'autre, j'ai mon script php qui retourne les correspondances entre cp et ville :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?php
    //
    // 
    //
    require_once ("../inc_pgsql.php");
    require_once ("../inc_client.php");
    require_once ("../inc_form.php");
     
    $dbconn = Connection();
     
    $cp = $_GET['cp'];
     
    // VERIFICATION
    if (empty($cp))
    {
    	echo("Le code postal est vide");
    	exit();
    }
     
    $requete = "SELECT ville FROM \"references\".ref_ville_cp WHERE cp='".$cp."' ORDER BY ville;";
    	$result = pg_query($dbconn, $requete);
    	if (!$result) {
    	  echo "Une erreur s'est produite.\n".pg_last_error();
    	  exit();
    	}
    	else
    	{
    		$nb = pg_num_rows($result);
    		if ($nb > 0)
    		{
    			if ($nb > 1)
    			{
    				while ($row = pg_fetch_assoc($result))
    				{
    					$id = strtolower(remove_accents(str_replace(' ','',$row['ville'])));
    					echo "<a name='".$id."'></a>";
    					echo "<a href='#".$id."' Onclick=\"document.getElementById('client[ville]').value='".$row['ville']."'\">".$row['ville']."</a><br/>";
    				}
    			}
    			else
    			{
    				$row = pg_fetch_assoc($result);
    				echo("<script type='text/javascript'>");
    				echo("document.getElementById('client[ville]').value='".$row['ville']."';");
    				echo ("</script>");
    			}
    		}
    		else
    		{
    			echo ("Aucune correspondance");
    		}
    	}
    Deconnection($dbconn);
    ?>

    donc le premier cas est bien géré, quand y'a plusieurs possibilites..
    mais quand y'en a qu'une seule, ca devrait remplir automatiquement le champ texte.. mais compliqué !


    Quand a la solution "eval" .. j'ai testé, mais ca n'a pas l'air de marcher...

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Citation Envoyé par denisc
    Retourne le code JS uniquement (sans les balises script) et fais un eval sur le texte retourné.
    très juste!


    et si possible, vire tes parenthèses pour encadrer une chaîne echo;

  6. #6
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par zevince
    Quand a la solution "eval" .. j'ai testé, mais ca n'a pas l'air de marcher...
    Mais si, eval ça marchera très bien dans ton cas....

    Simplement, il faut être consistent dans les deux cas, à savoir retourner soit du JS soit du HTML. La première solution est bien plus facile pour toi.

    Dans ton deuxième cas, tu enleves les balises script, et dans le premier, tu mets tout ton texte avec un petit writedivcp(...); autour.

    Ne reste plus qu'à changer ta fonction verifVille(cp) pour qu'elle ne refasse pas l'appel à writedivcp() et ta fonction file(fichier) qui au lieu de faire un :
    return(xhr_object.responseText);
    Devra faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    eval(xhr_object.responseText);
    Et ça devrait le faire en peu de temps

    PS: pour ton 3eme cas (pas de réponses) a toi de voir ce que tu veux faire en JS, pourquoi pas un alert?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Par défaut
    Ah ben cool ! un peu le bordel dans les ' et " mais ca c'est une question d'attention

    Merci bien !


    ca donne ca :
    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
    			if ($nb > 1)
    			{
    				while ($row = pg_fetch_assoc($result))
    				{
    					//$ville[]=$row['ville'];
    					//Array_iso($ville);
    					//Bouton_Creation_dossier($client_export);
    					$id = strtolower(remove_accents(str_replace(' ','',$row['ville'])));
    					$out .= "<a name=\'".$id."\'></a>";
    					$out .= "<a href=\'#".$id."\' Onclick=\'document.getElementById(\"client[ville]\").value=\"".$row['ville']."\"\'>".$row['ville']."</a><br/>";
    				}
    				echo("writedivcp('".$out."')");
    			}
    			else
    			{
    				$row = pg_fetch_assoc($result);
    				//echo ("test");
    				//echo("<script type='text/javascript'>");
    				echo("document.getElementById('client[ville]').value='".$row['ville']."';");
    				//echo ("</script>");
    				//echo ("test");
    			}
    pour la fonction php

    et ca :

    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
    function verifVille (cp)
    {
    	if(cp.length == 5)
    	{
    		texte = file2('http://10.0.0.163/scripts/V2/ajax/VilleCp.php?cp='+escape(cp))
    		//writedivcp(texte);
    	}
     
    }
    function file2(fichier)
         {
         if(window.XMLHttpRequest) // FIREFOX
              xhr_object = new XMLHttpRequest();
         else if(window.ActiveXObject) // IE
              xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
         else
              return(false);
         xhr_object.open("GET", fichier, false);
         xhr_object.send(null);
         if(xhr_object.readyState == 4) eval(xhr_object.responseText);
         else return(false);
         }
    pour le JS !

    Merci ! toujours aussi rapide et utile, ce forum !

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

Discussions similaires

  1. XMLHTTPRequest et interception de fichier inexistant
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 06/09/2005, 15h35
  2. XMLhttpRequest ... versions ?
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/08/2005, 10h33
  3. xmlhttprequest
    Par Avatar dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 22/08/2005, 13h01

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