A voir également:
- Actualiser un div avec XMLHttpRequest()
- Div c++ - Télécharger - Langages
- Remplacer #div/0 par vide ✓ - Forum Excel
- Moyenne.si.ens #div/0 ✓ - Forum Excel
- Actualiser outlook ✓ - Forum Mail
- Actualiser tcd google sheet - Forum Bureautique
15 réponses
briiiiix
Messages postés
575
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
18
28 oct. 2008 à 11:15
28 oct. 2008 à 11:15
Ok, je vois où t'n veux revenir,
En faite il faut que tout soit enchainé, je me suis battu avec le temps puisque j'ai bcp de travail afin de te créer un exemple complet de fonction js qui manipule un champs de texte dont l'id est "texte1" de façon asynchrone.
Le données sont recueillis depuis un fichier php "traitement.php" qui pourra contenir le script suivant:
<? print "ceci est un test"?>
La fonction js manipulant l'ajax est la suivante: (préviens moi si t'as besoin de comprendre un truc dedans)
function requete_ajax()
{
var dataRequest = null;
document.getElementById('texte1').value = 'patientez';
// Définition du connecteur en fonction du navigateur :
if (window.XMLHttpRequest)
{
dataRequest = new XMLHttpRequest();
if (dataRequest.overrideMimeType)
{
dataRequest.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject)
{
try {
dataRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
dataRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
document.getElementById('texte1').value = 'Impossible de communiquer avec le serveur';
}
}
}
// le secret d'AJAX réside en partie dans la réception et le traitement des résultats en background :
dataRequest.onreadystatechange = function()
{
document.getElementById('texte1').value = 'veuiller patienter';
if( dataRequest.readyState == 4 )
{
// Ici le code 200 signifie que la requête a renvoyé une valeur valide. On pourrait aussi gérer les erreurs 500, 404 ...
if( dataRequest.status == 200 )
{
if ( dataRequest.responseText != "" )
{
document.getElementById('texte1').value = dataRequest.responseText ;
} else {
document.getElementById('texte1').value = dataRequest.responseText ;
}
}
else
{
document.getElementById('texte1').value = 'Une erreur est survenue : ';
}
}
};
// le secret d'AJAX réside également dans l'envoi de la requête en background ( sans recharger la page ) :
dataRequest.open("GET", "traitement.php?parametre=" + 1 , true);
dataRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
dataRequest.send(null);
}
En faite il faut que tout soit enchainé, je me suis battu avec le temps puisque j'ai bcp de travail afin de te créer un exemple complet de fonction js qui manipule un champs de texte dont l'id est "texte1" de façon asynchrone.
Le données sont recueillis depuis un fichier php "traitement.php" qui pourra contenir le script suivant:
<? print "ceci est un test"?>
La fonction js manipulant l'ajax est la suivante: (préviens moi si t'as besoin de comprendre un truc dedans)
function requete_ajax()
{
var dataRequest = null;
document.getElementById('texte1').value = 'patientez';
// Définition du connecteur en fonction du navigateur :
if (window.XMLHttpRequest)
{
dataRequest = new XMLHttpRequest();
if (dataRequest.overrideMimeType)
{
dataRequest.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject)
{
try {
dataRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
dataRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
document.getElementById('texte1').value = 'Impossible de communiquer avec le serveur';
}
}
}
// le secret d'AJAX réside en partie dans la réception et le traitement des résultats en background :
dataRequest.onreadystatechange = function()
{
document.getElementById('texte1').value = 'veuiller patienter';
if( dataRequest.readyState == 4 )
{
// Ici le code 200 signifie que la requête a renvoyé une valeur valide. On pourrait aussi gérer les erreurs 500, 404 ...
if( dataRequest.status == 200 )
{
if ( dataRequest.responseText != "" )
{
document.getElementById('texte1').value = dataRequest.responseText ;
} else {
document.getElementById('texte1').value = dataRequest.responseText ;
}
}
else
{
document.getElementById('texte1').value = 'Une erreur est survenue : ';
}
}
};
// le secret d'AJAX réside également dans l'envoi de la requête en background ( sans recharger la page ) :
dataRequest.open("GET", "traitement.php?parametre=" + 1 , true);
dataRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
dataRequest.send(null);
}
briiiiix
Messages postés
575
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
18
28 oct. 2008 à 12:05
28 oct. 2008 à 12:05
Tu veux modifier la liste des choix ?
ok voici ma fonction js :
******************************************************************************************
function go(){
var xhr = getXhr(); // ici j'appelle une fonction qui me créer un new XMLHttpRequest()
// 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;
var tableau = leselect.split(',');
var k=0;
//document.getElementById('NomFichier').value = leselect;
document.getElementById('CheminImportation').value = tableau[0];
document.getElementById('NomFichier').value = tableau[1];
document.getElementById('CheminSauvegarde').value = tableau[2];
document.getElementById('NomSauvegarde').value = tableau[3];
document.getElementById('Importance').options[0].text=tableau[4];
document.getElementById('evenement_indispo').options[0].text=tableau[5];
}
}
// Ici on va voir comment faire du post
xhr.open("POST","champs.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
sel = document.getElementById('nom');
inde = sel.options[sel.selectedIndex].value;
xhr.send("inde="+inde);
}
******************************************************************************************
Mes donner sont dans un script "champs.php" qui utilise des requetes sql
Comme tu vois j'ai mi le xhr.responseText dans un tableau pour remplir des input text mais pour charger des option de liste et pour selectionner d'autres liste je ne voie pas comment faire.
Je pense que la gosse contrainte est que j'envoie toutes le données dans un xhr.responseText mais là non plus je ne voie pas comment faire autement car tout les champs doivent etre emplie en fonction du premier select (id="nom")
******************************************************************************************
function go(){
var xhr = getXhr(); // ici j'appelle une fonction qui me créer un new XMLHttpRequest()
// 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;
var tableau = leselect.split(',');
var k=0;
//document.getElementById('NomFichier').value = leselect;
document.getElementById('CheminImportation').value = tableau[0];
document.getElementById('NomFichier').value = tableau[1];
document.getElementById('CheminSauvegarde').value = tableau[2];
document.getElementById('NomSauvegarde').value = tableau[3];
document.getElementById('Importance').options[0].text=tableau[4];
document.getElementById('evenement_indispo').options[0].text=tableau[5];
}
}
// Ici on va voir comment faire du post
xhr.open("POST","champs.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
sel = document.getElementById('nom');
inde = sel.options[sel.selectedIndex].value;
xhr.send("inde="+inde);
}
******************************************************************************************
Mes donner sont dans un script "champs.php" qui utilise des requetes sql
Comme tu vois j'ai mi le xhr.responseText dans un tableau pour remplir des input text mais pour charger des option de liste et pour selectionner d'autres liste je ne voie pas comment faire.
Je pense que la gosse contrainte est que j'envoie toutes le données dans un xhr.responseText mais là non plus je ne voie pas comment faire autement car tout les champs doivent etre emplie en fonction du premier select (id="nom")
briiiiix
Messages postés
575
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
18
28 oct. 2008 à 09:48
28 oct. 2008 à 09:48
Il suffit de donner un id unique a tout element et d'utiliser la fonction suivante:
document.getElementById('id_element').value = 'valeur';
J'espère que ça te convien, sinon je suis la
document.getElementById('id_element').value = 'valeur';
J'espère que ça te convien, sinon je suis la
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci briiiiix
le pb c'est que dans
document.getElementById('id_element').value = 'valeur';
'valeur' est la réponse qu'envoie l'objet XMLHttpRequest()
dans l'exemple suivant je met la réponse dans la variable leselect
leselect = xhr.responseText;
Le contenue de leselect est, si je me trompe pas, un ensemble de donnée que je récupère à partir d'une base MySQL
Mon soucis et que je ne sais pas comment filtrer leselect pour mettre les donnés que je veut aux différent id_lement de mon formulaire , j'arrive à actualiser un champ
avec cette instuction
document.getElementById('Id_element').value = leselect;
Mais dans le cas de plusieurs Id_element je ne sais pas comment faire
Merci
le pb c'est que dans
document.getElementById('id_element').value = 'valeur';
'valeur' est la réponse qu'envoie l'objet XMLHttpRequest()
dans l'exemple suivant je met la réponse dans la variable leselect
leselect = xhr.responseText;
Le contenue de leselect est, si je me trompe pas, un ensemble de donnée que je récupère à partir d'une base MySQL
Mon soucis et que je ne sais pas comment filtrer leselect pour mettre les donnés que je veut aux différent id_lement de mon formulaire , j'arrive à actualiser un champ
avec cette instuction
document.getElementById('Id_element').value = leselect;
Mais dans le cas de plusieurs Id_element je ne sais pas comment faire
Merci
Mon formulaire contient une liste déroulante et en fonction du choix séléctionné d'autre élément de mon formulaire sont remplit dynamiquement il y a des input text et d'autres listes déroulantes
briiiiix
Messages postés
575
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
18
28 oct. 2008 à 13:04
28 oct. 2008 à 13:04
Dans le cas de menus deroulants, tu construits ton code html dans ta page php et tu renvoi tout le code par la même methode httpRequest, finalement tu remplace la fonction
document.getElementById('texte1').value = dataRequest.responseText ;
par:
document.getElementById('div1').innerHTML = dataRequest.responseText ;
Bien evidemment "div1" est l'id du div qui va contenir ton menu deroulant.
J'espère que c'est claire, sinon je suis toujours là
document.getElementById('texte1').value = dataRequest.responseText ;
par:
document.getElementById('div1').innerHTML = dataRequest.responseText ;
Bien evidemment "div1" est l'id du div qui va contenir ton menu deroulant.
J'espère que c'est claire, sinon je suis toujours là
Là j'avoue j'ai un peu de mal à te suivre
voilà mom formulaire :
*******************************************************************************************
<form action="" method="post" >
<p align="right">
<input type="submit" name="save_importation" value="save">
<input type="submit" name="exit_importation" value="exit">
<input type="submit" name="help_importation" value="help">
</p>
<fieldset>
<legend> <strong> <em class="vert"> Inputs nécéssaires à la production </em> </strong>
<br />
<p align="right" > <em class="new">NEW INPUT </em>:
<textarea name="NouveauInput" rows="1" cols="25"></textarea>
<input type="submit" name="ajouter_input" value="ajouter">
</p>
<em ><strong class="sujet"> Nom : </strong></em >
<select name="nom" id='nom' onchange='go()'>
<option value='-1'> choisir un input </option>
<?php
$bdd = "importation"; //Base de données importation
$host= "localhost"; // Hote
$user= "root"; // Utilisateur
$pass= ""; // Mot de passe
//Connexion bdd
@mysql_connect($host,$user,$pass)
@mysql_select_db($bdd);
$result= MYSQL_QUERY("SELECT * FROM table_inputs_importation");
while($donnees = mysql_fetch_array($result))
{
echo '<option value="'.$donnees['NomInput'].'">'.$donnees['NomInput'].'</option>';
}
mysql_close(); // Déconnexion
?>
</select>
<input type="submit" name="afficher" value="ok">
<input type="submit" name="suprimer_input" value="suprimer">
---------------------------------------------------------------------------------------------------------------------------------------------------------------
<br />
<em > Chemin importation :</em >
<div >
<input type="text" id="CheminImportation" name="CheminImportation" size="100" maxlength="300" />
</div><br /> <br />
<em > Non du fichier : </em >
<div >
<input type="text" id="NomFichier" name="NomFichier" size="100" maxlength="200" />
</div><br /> <br />
<em > Chemin de sauvegarde : </em >
<div >
<input type="text" id="CheminSauvegarde" name="CheminSauvegarde" size="100" maxlength="200" />
</div><br /> <br />
<em > Non sauvegarde : </em >
<div >
<input type="text" id="NomSauvegarde" name="NomSauvegarde" size="100" maxlength="200" />
</div><br /> <br />
<em > Entrée nécessaire pour le traitement ? </em >
<br /> <br />
<select id="Importance" name="Importance">
<option value="o"> oui </option>
<option value="n"> non </option>
</select>
<br /> <br />
<em > type d'input : </em >
<select id="evenement_indispo" name="evenement_indispo">
<option value="o"> indisponibilité </option>
<option value="n"> événement </option>
</select>
<br /> <br />
---------------------------------------------------------------------------------------------------------------------------------------------------------------
</legend>
</form>
*******************************************************************************************
Comme tu peut le voir je déclanche une fonction ajax go() dans mon premier <select> (id="nom") ensuite le reste des éléments du formulaire doivent etre remplit (ou séléctionné) dynamiquement en fonction du choix sélectionné.
dans ma fonction go() qui retourne le xhr.responseText mais je vois pas comment remplir (ou selectionner ) automaiquement mes champs avec ta dernière explication
Merci
voilà mom formulaire :
*******************************************************************************************
<form action="" method="post" >
<p align="right">
<input type="submit" name="save_importation" value="save">
<input type="submit" name="exit_importation" value="exit">
<input type="submit" name="help_importation" value="help">
</p>
<fieldset>
<legend> <strong> <em class="vert"> Inputs nécéssaires à la production </em> </strong>
<br />
<p align="right" > <em class="new">NEW INPUT </em>:
<textarea name="NouveauInput" rows="1" cols="25"></textarea>
<input type="submit" name="ajouter_input" value="ajouter">
</p>
<em ><strong class="sujet"> Nom : </strong></em >
<select name="nom" id='nom' onchange='go()'>
<option value='-1'> choisir un input </option>
<?php
$bdd = "importation"; //Base de données importation
$host= "localhost"; // Hote
$user= "root"; // Utilisateur
$pass= ""; // Mot de passe
//Connexion bdd
@mysql_connect($host,$user,$pass)
@mysql_select_db($bdd);
$result= MYSQL_QUERY("SELECT * FROM table_inputs_importation");
while($donnees = mysql_fetch_array($result))
{
echo '<option value="'.$donnees['NomInput'].'">'.$donnees['NomInput'].'</option>';
}
mysql_close(); // Déconnexion
?>
</select>
<input type="submit" name="afficher" value="ok">
<input type="submit" name="suprimer_input" value="suprimer">
---------------------------------------------------------------------------------------------------------------------------------------------------------------
<br />
<em > Chemin importation :</em >
<div >
<input type="text" id="CheminImportation" name="CheminImportation" size="100" maxlength="300" />
</div><br /> <br />
<em > Non du fichier : </em >
<div >
<input type="text" id="NomFichier" name="NomFichier" size="100" maxlength="200" />
</div><br /> <br />
<em > Chemin de sauvegarde : </em >
<div >
<input type="text" id="CheminSauvegarde" name="CheminSauvegarde" size="100" maxlength="200" />
</div><br /> <br />
<em > Non sauvegarde : </em >
<div >
<input type="text" id="NomSauvegarde" name="NomSauvegarde" size="100" maxlength="200" />
</div><br /> <br />
<em > Entrée nécessaire pour le traitement ? </em >
<br /> <br />
<select id="Importance" name="Importance">
<option value="o"> oui </option>
<option value="n"> non </option>
</select>
<br /> <br />
<em > type d'input : </em >
<select id="evenement_indispo" name="evenement_indispo">
<option value="o"> indisponibilité </option>
<option value="n"> événement </option>
</select>
<br /> <br />
---------------------------------------------------------------------------------------------------------------------------------------------------------------
</legend>
</form>
*******************************************************************************************
Comme tu peut le voir je déclanche une fonction ajax go() dans mon premier <select> (id="nom") ensuite le reste des éléments du formulaire doivent etre remplit (ou séléctionné) dynamiquement en fonction du choix sélectionné.
dans ma fonction go() qui retourne le xhr.responseText mais je vois pas comment remplir (ou selectionner ) automaiquement mes champs avec ta dernière explication
Merci
briiiiix
Messages postés
575
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
18
28 oct. 2008 à 14:23
28 oct. 2008 à 14:23
Je ne vois pas ce que tu veux faire.
Tu vaux remplire des chams et selectionner des valeurs dans des menus ou recharger de nouveau des menus ?
Tu vaux remplire des chams et selectionner des valeurs dans des menus ou recharger de nouveau des menus ?
En fait je veux faire les trois à la fois :
- remplir des champs texte
- selectionner des valeurs dans des menu
- charger des option dans d'autres menu
- remplir des champs texte
- selectionner des valeurs dans des menu
- charger des option dans d'autres menu
briiiiix
Messages postés
575
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
18
28 oct. 2008 à 14:41
28 oct. 2008 à 14:41
D'acc, fais voir ton code js, stp
briiiiix
Messages postés
575
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
18
28 oct. 2008 à 15:34
28 oct. 2008 à 15:34
Si tu as un menu a reconstruire a chaque fois que tu fais un appel a ajax, tu dois forcement cle construire dans le fichier php et retourner son code html dans ton response text.
Je vais t'expliquer ce soir avec un bon exemple.
DSL mais cette apres midi est très chargée
A+
Je vais t'expliquer ce soir avec un bon exemple.
DSL mais cette apres midi est très chargée
A+
bg62
Messages postés
23664
Date d'inscription
samedi 22 octobre 2005
Statut
Modérateur
Dernière intervention
17 décembre 2024
2 392
29 oct. 2008 à 11:23
29 oct. 2008 à 11:23
bonjour
un forum, c'est bien !
ici l'on peut même rester "anonyme", mais par respect pour ceux qui voudraient t'aider en répondant, il serait quand même bien mieux d'y être inscrit,
cela ne coûte rien et c'est bien plus sympathique ...
je sais, je "pique" de nouveau ma crise ... mais il y a parfois des raisons valables
@mitiés
b g
un forum, c'est bien !
ici l'on peut même rester "anonyme", mais par respect pour ceux qui voudraient t'aider en répondant, il serait quand même bien mieux d'y être inscrit,
cela ne coûte rien et c'est bien plus sympathique ...
je sais, je "pique" de nouveau ma crise ... mais il y a parfois des raisons valables
@mitiés
b g
merci briiiiix pour ton aide
Si j'ai bien compris dans ton exemple tu met le contenu du message dataRequest.responseText dans le chanp de type texte d'id 'texte1'. Pour un champs sa va j'arrive à l'actualiser.
Mais quant qu'il s'agit de plusieurs champs à actualiser à partir de la réponse dataRequest.responseText sa se complique.
Moi j'ai plusieurs champs de type texte et des liste déroulante à actualiser jusqu'a mintenant j'ai réussi à actualiser plusieurs champs text avec la méthode suivante
dataRequest.responseText.split(',')
que je met dans un tableaux , ce qui met permet de diriger chaque élément du tableau dans les champs type text.
Mon souci est l'actualisation de mes liste déroulantes à partir du meme dataRequest.responseText
Comment faire ?
Si j'ai bien compris dans ton exemple tu met le contenu du message dataRequest.responseText dans le chanp de type texte d'id 'texte1'. Pour un champs sa va j'arrive à l'actualiser.
Mais quant qu'il s'agit de plusieurs champs à actualiser à partir de la réponse dataRequest.responseText sa se complique.
Moi j'ai plusieurs champs de type texte et des liste déroulante à actualiser jusqu'a mintenant j'ai réussi à actualiser plusieurs champs text avec la méthode suivante
dataRequest.responseText.split(',')
que je met dans un tableaux , ce qui met permet de diriger chaque élément du tableau dans les champs type text.
Mon souci est l'actualisation de mes liste déroulantes à partir du meme dataRequest.responseText
Comment faire ?