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] Code tuto Ajax fonctionne pas sous FF, mais IE et OP sont OK


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut [AJAX] Code tuto Ajax fonctionne pas sous FF, mais IE et OP sont OK
    Bonjour,

    Je me suis inspiré du tuto ajax sur developpez.

    J'ai développer une fonction qui, apres renseignement dans un formulaire va verifier si l'email saisie n'existe pas dans la base.

    Si il existe il va remettre le champs à 0.

    Ca fonctionne impeccable sous IE, sous opéra mais pas sous Firefox. (Pas de message d'erreur, rien nada)

    Une idée?
    Merci.

    Voici le code JAVASCRIPT:

    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
    <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;
    			}
     
     
     
    			function checkemail(){
    				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
     
    						if(leselect>0){
    							alert("Cet email est déja inscrit dans notre base, veuillez en saisir un autre ou redemander votre mot de passe !!!");
    							document.formulaire.email.value='';
    						}
     
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","outils/checkmail.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('email');
    				email = sel.value;
    				xhr.send("email="+email);
    			}
    		</script>

    Voici le code du formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form name="formulaire" method='post' onSubmit="return verif_formulaire()">
     
    		<input type='text' name='email' size='40' maxlength='256' value='' onblur='checkemail()'/>
     
     
    		<input type="submit" value="ENREGISTRER" />
    </form>


    Voici le code sur le fichier 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
    <?php
            include "outils.php";
            connectionBDD();//on se connecte à la base
            
            if(isset($_POST["email"])){
            
            $objet = new candidat();// on a un objet qui va retourner le nombre de resultats
            $insererUtilisateur = $objet -> testCandidat($_POST["email"]);
            
                            echo $insererUtilisateur;       //on retourne le nombre de resultats à Mr AJAX
            }
     
            
            deconnectionBDD();//on se deconnecte
    ?>

  2. #2
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    de la meme facon ce code ne fonctionne pas sous Firefox, poutant il vient de la faq:

    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
    <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('province').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","outils/listederoulanteprovince.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('pays');
    				idauteur = sel.options[sel.selectedIndex].value;
    				xhr.send("idpays="+idauteur);
    			}
    			</script

    code html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <li><label>Pays <em>*</em></label>&nbsp;<select name='pays' size='1' onchange='go()'><option class='form-option-entete' value=''>S&eacute;lectionnez</option><option value='1'>CANADA</option><option value='2'>ETATS UNIS</option><option value='3'>FRANCE</option></select></li>
    			<li><label>Province <em>*</em></label>&nbsp;<span id="province"><select name='province' size='1'><option value=''>Sélectionnez</option></select></span></li>


    code php appele par ajax:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
            include "outils.php";
            connectionBDD();
            
            if(isset($_POST["idpays"])){
            echo "<select name='province' size='1'>";
            
                    listeDeroulante(PROVINCE, $_POST["idpays"]);
                    
            echo "</select>";
            }
            
            deconnectionBDD();
    ?>

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    je n'ai aucun souci avec ajax et firefox ...

    voici le code brut que j'utilise avec plein de variables inutiles pour vous mais le core est bon

    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
    function ConnectBase(Where,TxtFile){
    	var ReqObj=null;
    	var Catal;
     
     
    	switch ( true ) {	
    					case (!!window.XMLHttpRequest):
    											ReqObj=new XMLHttpRequest();
    											break;
     
    					case  (!!window.ActiveXObject):
    											ReqObj=new ActiveXObject("Microsoft.XMLHTTP");
    											break;
     
    					default :							alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    					  }
     
    	ReqObj.onreadystatechange=function() {		
    													if(ReqObj.readyState==4){
    																			//if(ReqObj.responseText.length==0){ alert("En Construction !");
    																				if(ReqObj.responseText.split('\<html\>').length>1){ alert("En Construction \!");
    																	   								   ProductsLoaded=false;
    																	   								   MenuLoaded=true;
    																	   								   nofile=true;
    																	   								   document.getElementById('masque').style.display='none';
    																	   								   return  false;
    																	   								   }
    																			else{ What=ReqObj.responseText; 
    																				   MenuLoaded=false;
    												          							   ProductsLoaded=false;
    												          							   populate(Where,What);
    																				  }
    																				}
    											    }      
     
     
    	ReqObj.open ('GET',TxtFile+'.txt?'+new Date(),true);
    	try { ReqObj.send(null); }
    	catch(e){}
    	return;
    	}
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Bonjour !
    Je pense que le problème vient du fait que tu fais un submit en cliquant sur le bouton. La requête AJAX doit surement être effectuée (pas vu d'erreur de ce coté), mais le résultat ne s'affiche pas car entre-temps le formulaire a été transmis et la page rechargée.

    Essaye de faire comme ceci pour ton formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form name="formulaire" method='post'>
    		
    		<input type='text' name='email' size='40' maxlength='256' value='' onblur='checkemail()'/>
     
    		
    		<input type="button" value="ENREGISTRER" onClick="verif_formulaire()"/>
    </form>

  5. #5
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    non, non,

    Le premier code check si l'email existe dans la base sur le onblur, et refait la meme fonction lors du submit, au cas ou.
    Mais sur le onblur, ca ne fonctionne deja pas.

    Pareil pour le second code qui est un code pour 2 listes deroulantes liees, la, on onevoi rien non plus, c'est juste, quand on selectionne dans la premiere liste ca met les options dans la seconde.

  6. #6
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Pardon, j'avais pas vu le onblur... J'ai rien dit...

  7. #7
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Bon ben en fait c'est tout bête ton erreur :
    Tu fais document.getElementById('email') alors que tu n'a pas définit cet id :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='text' name='email' id='email' size='40' maxlength='256' value='' onblur='checkemail()'/>
    J'ai essayé sans l'id et c'est vrai que ça marche sous IE, ce qui est étonnant !
    Enfin bref normalement maintenant ça marche (j'ai essayé)

    PS : quand t'a un truc qui marche pas sous FF, pense à regarder dans la console d'erreurs ! et puis je te conseille les extensions web developer et firebug

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    étonnant ? heu non pas de la part d'un navigateur permissif comme IE ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre actif
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 251
    Points : 227
    Points
    227
    Par défaut
    Ah bon il est permissif ?
    Pourtant moi la plupart du temps j'ai un problème de syntaxe sous IE alors que ça marche très bien sous FF...
    Enfin bon c'est pas la question

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Oui IE n'est pas assez rigoureux dans son interprétation du code ...
    de plus il ne respècte pas les standards ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par ptitskippy
    Bon ben en fait c'est tout bête ton erreur :
    Tu fais document.getElementById('email') alors que tu n'a pas définit cet id :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='text' name='email' id='email' size='40' maxlength='256' value='' onblur='checkemail()'/>
    J'ai essayé sans l'id et c'est vrai que ça marche sous IE, ce qui est étonnant !
    Enfin bref normalement maintenant ça marche (j'ai essayé)

    PS : quand t'a un truc qui marche pas sous FF, pense à regarder dans la console d'erreurs ! et puis je te conseille les extensions web developer et firebug

    et oui en effet, j'avais le meme probleme avec les pays, c'est resolu. *

    quand je pense combien de temps jai cherche....alors que cetait sous mes yeux, cest toujours les trucs les plus betes qui nous prennent le plus de temps.

    merci bcp, resolu

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

Discussions similaires

  1. [AJAX] Tutoriel ajax du site ne fonctionne pas sous IE 9
    Par Super_carotte dans le forum AJAX
    Réponses: 2
    Dernier message: 20/01/2015, 10h34
  2. Code qui ne fonctionne pas sous Runtime
    Par RobiPMS dans le forum Runtime
    Réponses: 4
    Dernier message: 09/06/2013, 18h31
  3. Code js ne fonctionne pas sous ie
    Par ric009 dans le forum jQuery
    Réponses: 22
    Dernier message: 27/03/2013, 23h14
  4. [AJAX] ajax et xml ne fonctionnant pas sous Firefox
    Par Phpdebut dans le forum AJAX
    Réponses: 7
    Dernier message: 03/02/2010, 12h15
  5. Mes codes VBA ne fonctionnent pas sous access 2007
    Par ralfus dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/11/2008, 11h36

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