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] fonction js


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut [AJAX] fonction js
    Salut,
    je ne sais pas si je suis dans le bon forum pour ma question mais la voici :
    J'ai fait petit script pour récupérer la date de mon serveur, ce dernier ressemble à ceci :
    Dans html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <SCRIPT LANGUAGE="JavaScript" SRC="serverDate.js"></SCRIPT>
    </head>
    <body onLoad="init()">
    <div id="resultat"></div>
    <a href="testDate.zip"><b>la source</b></a>
    </body>
    </html>
    Dans 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
     
    var xhr = null; 
    var n=0;
    function getXhr(){
         if(window.XMLHttpRequest)xhr = new XMLHttpRequest(); 
    		else if(window.ActiveXObject){ 
    			try{
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		}else{
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		xhr = false; 
    		} 
    }
    function init(){
    loop();
    }
    function loop(){
    setTimeout('loop();',1000);
    ShowPage();
    }
    function ShowPage(){
    getXhr();
    xhr.onreadystatechange = function(){
         if(xhr.readyState == 4 && xhr.status == 200){
    		var dateAjax = new Date(xhr.responseText);
    		document.getElementById('resultat').innerHTML=dateAjax;
         }
        }
    xhr.open("POST","heure.jsp",true);
    xhr.send(null);
    }
    Jusque là, tout tourne nickel, mais ce que j'aimerais, c'est que le fichier js me renvoie une valeur de retour au lieu d'écrire dans la zone de résultat. J'ai tenté ceci mais ile me répond Undifined
    Dans l'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
     
    <SCRIPT LANGUAGE="JavaScript" SRC="serverDate.js"></SCRIPT>
    <script type="text/javascript">
    	function init(){
    		loop();
    	}
     
    	function loop(){
    		setTimeout('loop();',5000);
    		document.getElementById('resultat').innerHTML=giveDate();
    	}
    </script>
    </head>
    <body onLoad="init()">
    <div id="resultat"></div>
    <a href="testDate.zip"><b>la source</b></a>
    </body>
    Et dans le 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
     
    var xhr = null; 
    var n=0;
    function getXhr(){
         if(window.XMLHttpRequest)xhr = new XMLHttpRequest(); 
    		else if(window.ActiveXObject){ 
    			try{
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		}else{
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		xhr = false; 
    		} 
    }
    function giveDate(){
    getXhr();
    xhr.onreadystatechange = function()
        {
         if(xhr.readyState == 4 && xhr.status == 200){
    		var dateAjax = new Date(xhr.responseText);
    		return dateAjax;	
         }
        }
    xhr.open("POST","heure.jsp",true);
    xhr.send(null);
    }
    Quelqu'un sait d'où provient l'erreur?
    Pourquoi vouloir ré-inventer la roue...
    ...Surtout si c'est pour la faire carrée...

  2. #2
    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 Empty_body
    Quelqu'un sait d'où provient l'erreur?

    http://javascript.developpez.com/faq...jax.asynchrone

    Commence par là, ça t'aidera à comprendre ton erreur.

  3. #3
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Ok, si j'ai bien compris, ça fonctionne pas car :
    Si on essaye d'accéder à la réponse associée à l'objet xmlHttpRequest tout de suite après l'avoir envoyé, celle-ci ne sera pas encore disponible.
    Existe-t-il quand même un moyen de récupérer les infos dont j'ai besoin? Est-ce possible de mettre l'exécution du javascript en pause le temps de l'exécution d'ajax et de rendre la main au js après exécution d'ajax?
    Pourquoi vouloir ré-inventer la roue...
    ...Surtout si c'est pour la faire carrée...

Discussions similaires

  1. [AJAX] Ajax fonction callback
    Par lirycs78 dans le forum AJAX
    Réponses: 2
    Dernier message: 20/09/2010, 23h02
  2. [AJAX] fonction precedent
    Par [thebadskull] dans le forum AJAX
    Réponses: 2
    Dernier message: 23/06/2009, 09h18
  3. [AJAX] setinterval en ajax fonction sous le navigateur sauf sous explorer
    Par speedylol dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/01/2008, 15h34
  4. [AJAX] Ma fonction ne se termine pas...
    Par Davboc dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 08/03/2006, 12h05
  5. [AJAX] Plusieurs champs màj en fonction d'un seul...
    Par Davboc dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 15/02/2006, 11h41

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