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

AJAX Discussion :

[AJAX] Faire une requete avec Ajax suite Onchange input text


Sujet :

AJAX

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut [AJAX] Faire une requete avec Ajax suite Onchange input text
    Bonjour
    Sur mon site j'utilise un formulaire ou j'ai deux champs, date et heure (l'utilisateur choisi la date et l'heure d'un rendez-vous) je souhaite que quant l'utilisateur sélectionne une date, exécuté une requête qui va vérifié les disponibilités de cette journée.

    Un coup de main svp ?

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonsoir andry.aime , merci pour ta réponse
    en faite j'ai apprit ce tuto par-cœur et je n'arrive toujours pas a trouver une solution, j'ai réalisé tous les exemples mais pour le mien ça bloc

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par skins Voir le message
    mais pour le mien ça bloc
    Montres ce que tu as fait pour que l'on puisse corrigé

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Je vous remercie pour votre aide
    voilà
    j'ai 2 partie comme indiqué dans le tuto :


    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
     
    <html>
    	<head>
    		<title>Mon fichier Ajax</title>
    		<script type='text/javascript'>
     
    			function getXhr(){
                                    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; 
    				} 
                                    return xhr;
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    				var xhr = getXhr();
    				// 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
    						document.getElementById('livre').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","semaine.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 de l'auteur
    				sel = document.getElementById('auteur');
    				idauteur = sel.options[sel.selectedIndex].value;
    				xhr.send("idAuteur="+idauteur);
    			}
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<legend>Liste liées</legend>
    				<label>Auteurs</label>
    				<input type='text' id='auteur' onchange='go()'>
     
     
    				<label>Livres</label>
    				<div id='livre'>
     
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>
    La 2eme partie semaine.php

    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
     
    <?php
            
            if(isset($_POST["idAuteur"])){
                    mysql_connect("localhost","root","pass");
                    mysql_select_db("my_bd");
     
    $semaine = $_POST["idAuteur"] ;
    $result2=mysql_query ("SELECT COUNT(*) AS nbr FROM jos_weeks WHERE semaine='$semaine' " );
    $donnees = mysql_fetch_array($result2) ;
    $nbr = $donnees['nbr'] ;
     
    if ($nbr != 0)
    { 
     
    $res = mysql_query("SELECT * FROM jos_weeks WHERE semaine=".$_POST["idAuteur"]." ");
     
    //traitement de la requête 
    <table>
     
    .
    .
    .
    </table> 
     
    <?php
    }
    }
    ?>
    un petit coup de main svp

  6. #6
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Attention dans les copier/coller dans les tutos ! tu nous parles de date et heure et on se retrouve avec des livres et des auteurs !


    Citation Envoyé par skins Voir le message
    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
                            // GWYOHM: mettre des commentaires exacts ou pas de
                            // commentaires du tout ! Y'a pas de bouton
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    				var xhr = getXhr();
    				// 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){
    						// GWYOHM: mauvais choix de nom de variable  + même remarque que plus haut 
                                                    leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('livre').innerHTML = leselect;
    					}
    				}
    
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ajaxLivre.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 de l'auteur
    				sel = document.getElementById('auteur');
                  			// GWYOHM:  Cette syntaxe permet de récupérer la valeur d'un select ! tu es sur un input text
    				idauteur = sel.options[sel.selectedIndex].value;
    
                                            // A remplacer par
    
                                            idAuteur = sel.value;
    				xhr.send("idAuteur="+idauteur);
    			}
    		</script>
    ...
    				<legend>Liste liées</legend>
    				<label>Auteurs</label>
    				<input type='text' id='auteur' onchange='go()'>
    					
    
    				<label>Livres</label>
    				<div id='livre'>
    
    				</div>
    ...
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par gwyohm Voir le message
    Attention dans les copier/coller dans les tutos ! tu nous parles de date et heure et on se retrouve avec des livres et des auteurs !
    Bonjour gwyohm et merci pour ton aide
    en fait j'ai pu modifier plusieurs choses dans le code (La majorité grâce a toi), mais je n'arrive toujours pas a avoir un résultats
    Partie JS
    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
     
    function getXhr(){
                                    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; 
    				} 
                                    return xhr;
    			}
     
     
    			function RDV(){
    				var xhr = getXhr();
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
     
    					if(xhr.readyState == 4 && xhr.status == 200){
    						leselect = xhr.responseText;
    						document.getElementById('Dispo').innerHTML = leselect;
    					}
    				}
    				xhr.open("POST","dispo.php",true);
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				sel = document.getElementById('text_8');
    				idtext_8 = sel.value;
    				xhr.send("idtext_8="+idtext_8);
    			}
    Partie HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     <input class="cf_inputbox" maxlength="150" size="30" title="" id="text_8" name="Date" type="text" onchange='RDV()' /><br>
    <div id="Dispo"> </div>
    Partie PHP "dispo.php" (Juste un test du retour)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
            
            if(isset($_POST["idtext_8"])){
     
    echo "Le test est OK"; 
     
    }
    ?>
     
    Je te remercie d'avance

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    mais je n'arrive toujours pas a avoir un résultats
    C'est-à-dire ?
    La requête est bien lancée ? Tu reçois une réponse ?

    Tes id sont bien uniques dans la page ?
    Le onchange d'un input text est lancé quand le champ perd le focus ET que sa valeur a été modifiée, c'est bien ce que tu souhaites ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Bovino Voir le message
    C'est-à-dire ?
    La requête est bien lancée ? Tu reçois une réponse ?
    Comment je peut le vérifier , ce que je sais c'est que rien ne se passe sur la page
    Citation Envoyé par Bovino Voir le message
    Tes id sont bien uniques dans la page ?
    Absolument il y a un seul champ qui a le id text_8 et un seul div Dispo
    Citation Envoyé par Bovino Voir le message
    Le onchange d'un input text est lancé quand le champ perd le focus ET que sa valeur a été modifiée, c'est bien ce que tu souhaites ?
    En fait pas vraiment, j'utilise un composant qui affiche un calendrier (voir PJ) et je souhaite que quant l'utilisateur choisi une date exécuté la requête, je pensai que le Onchange et le plus approprier
    Images attachées Images attachées  

  10. #10
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par skins Voir le message
    Comment je peut le vérifier
    Avec firebug par exemple et si tu n'as pas firefox ni firebug, tu peux sans doute tracer ton php pour voir s'il est appelé...

    Citation Envoyé par skins Voir le message
    En fait pas vraiment, j'utilise un composant qui affiche un calendrier (voir PJ) et je souhaite que quant l'utilisateur choisi une date exécuté la requête, je pensai que le Onchange et le plus approprier
    Si la valeur de ton input text est modifiée par du javascript, tu n'auras pas d'événement change.
    Il faut que tu déclenches ta méthode dans le code de ton calendrier
    Et si tu modifiais le champ texte à la main ?
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par gwyohm Voir le message
    Avec firebug par exemple et si tu n'as pas firefox ni firebug, tu peux sans doute tracer ton php pour voir s'il est appelé...

    Si la valeur de ton input text est modifiée par du javascript, tu n'auras pas d'événement change.
    Il faut que tu déclenches ta méthode dans le code de ton calendrier
    Et si tu modifiais le champ texte à la main ?
    j'ai utilisé un champ input texte normal pour tester et sa marche
    Citation Envoyé par gwyohm Voir le message
    Il faut que tu déclenches ta méthode dans le code de ton calendrier
    Et si tu modifiais le champ texte à la main ?
    le champs est Readonly , comment pourrais-je inclure cette méthode ?

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    une dernière question svp
    comment faire pour envoyé 2 variables au lieu d'une seule ?

  13. #13
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sel = document.getElementById('text_8');
                    idtext_8 = sel.value;
                    var var2="unPetitMot";
    xhr.send("idtext_8="+idtext_8+"&nomVar="+var2);

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

Discussions similaires

  1. [AJAX] faire une requete ajax
    Par brunochp dans le forum AJAX
    Réponses: 4
    Dernier message: 20/03/2009, 09h37
  2. [AJAX] Choisir une date avec AJAX
    Par Niki59 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/12/2008, 19h30
  3. [AJAX] Acces aux données avec ajax dans une fonction javascript
    Par Sidi-Bou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/03/2008, 12h04
  4. [AJAX] Afficher une image avec ajax
    Par Mister Nono dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/11/2007, 19h23
  5. cmt se connecté a oracle pour faire une requete avec python
    Par dipajero dans le forum Bibliothèques tierces
    Réponses: 6
    Dernier message: 28/12/2005, 20h22

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