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 :

récupération d'une constante pour un xhr.send


Sujet :

JavaScript

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut récupération d'une constante pour un xhr.send
    Bonjour,

    Voici mon bout de script concerné par ma question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    xhr.open("POST","majeur_ajax_majtiers.php",true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    idfile = _idselect.options[_idselect.selectedIndex].value;
    xhr.send("idTiers="+idfile)
    Sur la dernière ligne, je crée l'indice pour le tableau $_POST
    Cet indice est une constante. Je voudrais le changer par une variable contenant une constante.

    En fait je veux pouvoir l'appeler toto, titi etc.. en fonction de mon besoin dans ma page html

    J'ai donc créé une variable Cette variable est alimenté par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('id_tiers')
    Je change ma dernière ligne en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send(_documentDiv"="+idfile)
    Mais je fais surement une erreur, parceque du coup cela ne fonctionne plus.

    Quelle erreur de syntaxe je fais sur cette ligne ?

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send(_documentDiv"="+idfile)
    + oubli de escape (url encode)

  3. #3
    Expert éminent

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par lodan
    En fait je veux pouvoir l'appeler toto, titi etc.. en fonction de mon besoin dans ma page html
    Ok

    Citation Envoyé par lodan
    J'ai donc créé une variable Cette variable est alimenté par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('id_tiers')
    Là, comprends plus... Tu devrais pas plutot avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _nomVariable = "toto";
    :

  4. #4
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Oui j'ai mal présenté la chose

    Dans mon html, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="go(document.getElementById('id_tiers'),document.getElementById('maj_tiers_type'))"
    Dans mon script, j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function go (div,select){
    _documentDiv=div;
    _idselect=select;
    Et c'est la valeur du "div" que je veux récupérer en constante.

    Fremy, je n'ai pas saisi ton message

  5. #5
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par FremyCompany
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send(_documentDiv"="+idfile)
    + oubli de escape (url encode)
    Ben il manque un "+" entre le v et le "... et tu dois encoder au format HTTP le nom de ta div...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send(escape(_documentDiv) + "=" + escape(idfile))

  6. #6
    Expert éminent

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par lodan
    Et c'est la valeur du "div" que je veux récupérer en constante.
    Qu'est ce que tu entends par valeur de la div? Un div n'a pas de valeur.....

    Tu peux essayer innerHTML (qui te donne le code HTML contenu) ou id (l'identifiant)? innerText te donne le texte contenu, mais je ne suis pas sur de la compatibilité.

  7. #7
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Parfois, je ne sais pas pourquoi, le clavier dérappe.

    La valeur de div, c'est la valeur de l'id du div

  8. #8
    Expert éminent

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par lodan
    Parfois, je ne sais pas pourquoi, le clavier dérappe.

    La valeur de div, c'est la valeur de l'id du div
    Ben :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xhr.send(_documentDiv.id+"="+idfile)

  9. #9
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Bonjour,

    Merci à vous cela fonctionne parfaitement

    Voici mon html :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    		<p>
    			<label for="table" title="Veuillez choisir un type de tiers dans la liste">Type de tiers :</label>
    			<select name="maj_clot_new_type_tiers" id="maj_tiers_type" title="Veuillez choisir un type de tiers dans la liste" 
    			onchange="go(document.getElementById('maj_clot_new_tiers'),document.getElementById('maj_tiers_type'))"
    			onfocus="this.className='focus';" onblur="this.className='normal';">
    						<option value="-1">Aucun</option>
    						{foreach from=$tiers_type item=type key=type_tiers_id}
    								<option value="{$type_tiers_id}"
    	  							{if ($type_tiers_id  == $cloture.maj_clot_new_type_tiers)}
    	  					 		selected
    	  				 			{/if}
    	  							>{$type}</option>
    	  					{/foreach}		
    			</select>
    			<span class="legende">ex : 'Famille'</span></p>
    		</p>
    		<p>
    			<div id="maj_clot_new_tiers">
    			<label for="champ" title="Veuillez choisir un tiers dans la liste">Tiers :</label>
    						<select name="maj_clot_new_tiers" title="Veuillez choisir un tiers dans la liste" onfocus="this.className='focus';" onblur="this.className='normal';" >
    						{if $cloture.maj_clot_new_tiers<>""}
    						<option value="{$cloture.maj_clot_new_tiers}">{$cloture.t1tiers_nom} - {$cloture.t1tiers_ville_id|getCodePostal} {$cloture.t1tiers_ville_id|getVille}</option>
    						{else}
    						<option value="-1">Choisir un Type de tiers</option>
    						{/if}		
    			</select>
    			</div>
    		</p>
    		<p>
    			<label for="table" title="Veuillez choisir un type de tiers dans la liste">Type de tiers :</label>
    			<select name="maj_clot_test_type_tiers" id="maj_tiers_type2" title="Veuillez choisir un type de tiers dans la liste" 
    			onchange="go(document.getElementById('maj_clot_test_tiers'),document.getElementById('maj_tiers_type2'))"
    			onfocus="this.className='focus';" onblur="this.className='normal';">
    						<option value="-1">Aucun</option>
    						{foreach from=$tiers_type item=type key=type_tiers_id}
    								<option value="{$type_tiers_id}"
    	  							{if ($type_tiers_id  == $cloture.maj_clot_test_type_tiers)}
    	  					 		selected
    	  				 			{/if}
    	  							>{$type}</option>
    	  					{/foreach}		
    			</select>
    			<span class="legende">ex : 'Famille'</span></p>
    		</p>
    		<p>
    			<div id="maj_clot_test_tiers">
    			<label for="champ" title="Veuillez choisir un tiers dans la liste">Tiers :</label>
    						<select name="maj_clot_test_tiers" title="Veuillez choisir un tiers dans la liste" onfocus="this.className='focus';" onblur="this.className='normal';" >
    						{if $cloture.maj_clot_new_tiers<>""}
    						<option value="{$cloture.maj_clot_test_tiers}">{$cloture.t2tiers_nom} - {$cloture.t2tiers_ville_id|getCodePostal} {$cloture.t2tiers_ville_id|getVille}</option>
    						{else}
    						<option value="-1">Choisir un Type de tiers</option>
    						{/if}		
    			</select>
    			</div>
    		</p>
    		<p>
    			<label for="table" title="Veuillez choisir un type de tiers dans la liste">Type de tiers :</label>
    			<select name="maj_clot_obs_type_tiers" id="maj_tiers_type3" title="Veuillez choisir un type de tiers dans la liste" 
    			onchange="go(document.getElementById('maj_clot_obs_tiers'),document.getElementById('maj_tiers_type3'))"
    			onfocus="this.className='focus';" onblur="this.className='normal';">
    						<option value="-1">Aucun</option>
    						{foreach from=$tiers_type item=type key=type_tiers_id}
    								<option value="{$type_tiers_id}"
    	  							{if ($type_tiers_id  == $cloture.maj_clot_obs_type_tiers )}
    	  					 		selected
    	  				 			{/if}
    	  							>{$type}</option>
    	  					{/foreach}		
    			</select>
    			<span class="legende">ex : 'Famille'</span></p>
    		</p>
    		<p>
    			<div id="maj_clot_obs_tiers">
    			<label for="champ" title="Veuillez choisir un tiers dans la liste">Tiers :</label>
    						<select name="maj_clot_obs_tiers" title="Veuillez choisir un tiers dans la liste" onfocus="this.className='focus';" onblur="this.className='normal';" >
    						{if $cloture.maj_clot_new_tiers<>""}
    						<option value="{$cloture.maj_clot_obs_tiers}">{$cloture.t3tiers_nom} - {$cloture.t3tiers_ville_id|getCodePostal} {$cloture.t3tiers_ville_id|getVille}</option>
    						{else}
    						<option value="-1">Choisir un Type de tiers</option>
    						{/if}		
    			</select>
    			</div>
    		</p>
    Notez que j'utilise le même nom pour l'id de chaque "div" et pour le "name" de chaque champ attendu.

    Le script

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    // Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
    var pickRecentProgID = function (idList){
        // found progID flag
        var bFound = false;
        for(var i=0; i < idList.length && !bFound; i++){
            try{
                var oDoc = new ActiveXObject(idList[i]);
                o2Store = idList[i];
                bFound = true;
            }catch (objException){
                // trap; try next progID
            };
        };
        if (!bFound)
            throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
        idList = null;
        return o2Store;
    }
     
    // Retourne un nouvel objet XmlHttpRequest
    var GetXmlHttpRequest_AXO=null
    var GetXmlHttpRequest=function () {
        if (window.XMLHttpRequest) {
            return new XMLHttpRequest()
        }
        else if (window.ActiveXObject) {
            if (!GetXmlHttpRequest_AXO) {
                GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
            }
            return new ActiveXObject(GetXmlHttpRequest_AXO)
        }
        return false;
    }
     
    		//<!--Méthode qui sera appelée sur le click du bouton-->
    			var _documentDiv=null; // le Div contenant l'emplacement de destination Attention, le nom du champ de destination et le nom du div sont identique
    			var _idselect=null; // Id du select de départ
     
    			function go (div,select){
    			  _documentDiv=div;
    			  _idselect=select;
     
    				var xhr=GetXmlHttpRequest();
    				//<!--On défini ce qu'on va faire quand on aura la réponse-->
    				xhr.onreadystatechange = function()
    				{
    					//<!--On ne fait quelque chose que si on a tout reçu et que le serveur est ok-->
    					if(xhr.readyState == 4 && xhr.status == 200)
    					{
    					leselect = xhr.responseText;
    					//<!--On se sert de innerHTML pour rajouter les options a la liste-->
    					_documentDiv.innerHTML = leselect;
    					}
    				}
     
    				//<!-- Ici on fait du post-->
    				xhr.open("POST","majeur_ajax_majtiers.php",true);
    				//<!--ne pas oublier ça pour le post-->
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				//<!--ne pas oublier de poster les arguments-->
    				//<!--ici, l'id du div + la valeur du Select-->
    				idfile = _idselect.options[_idselect.selectedIndex].value;
    				xhr.send(_documentDiv.id+"="+idfile)
    			}
    Le PHP appelé pour charger côté serveur les valeurs de la liste déroulante attendu

    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
    $indice=array_keys($_POST);
    	echo "<label for='champ' title='Veuillez choisir un tiers' class='oblig'>*Tiers :</label>";
    	echo "<select name=$indice[0]>";
    	if(isset($_POST[$indice[0]])){
    	// Lecture pour le table des tiers
    	echo "<option>Aucun</option>";
    	$query = mysql_query("SELECT maj_tiers.id_tiers, tiers_nom, tiers_ville_id
    						  FROM ".$prefixe_table."`maj_tiers`
    						  LEFT OUTER JOIN ".$prefixe_table."t_tiers ON maj_tiers.id_tiers = t_tiers.id_tiers
    						  WHERE maj_tiers.id_maj=$id_maj
    						  AND `maj_tiers_type`='".$_POST[$indice[0]]."'
     						  AND maj_tiers.id_trt>0
    						  AND maj_tiers.id_trt<5
    						  AND t_tiers.id_trt>0
    						  AND t_tiers.id_trt<5");
    		while($row = mysql_fetch_array($query))
    		{
    			$cp=getCodePostal($row[2]);
    			$ville=getVille($row[2]);
    			echo "<option value='$row[0]'>$row[1] - $cp $ville</option>";
    		}
    	}
    	echo "</select>";
    Merci à tous pour votre aide.

    Bonne journée

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/09/2014, 10h49
  2. Récupération d'une variable pour une ligne de code
    Par flo2tours dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 09/04/2014, 17h08
  3. Récupération d'une image pour MapXTreme à partir de WMTS
    Par nepaim dans le forum IGN API Géoportail
    Réponses: 10
    Dernier message: 02/10/2012, 14h46
  4. [AC-2003] Récupération d'une variable pour SQL
    Par gentoo dans le forum IHM
    Réponses: 3
    Dernier message: 11/07/2010, 14h49
  5. [ODBC] Récupération d'une donnée pour insertion dans une autre table
    Par rom950 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2006, 17h13

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