Temps d'exécution [Résolu]

Signaler
Messages postés
29
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
13 juillet 2011
-
Messages postés
29
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
13 juillet 2011
-
Bonjour à tous,

Voilà, j'ai essayé de faire de l'Ajax sans JQuery (je regrette mais bon ^^). Le problème que je rencontre c'est un problème au niveau du temps d'exécution du traitement.

Plus simplement, dans mon code, lorsque je mets une alert ça marche si je la retire, ça marche plus.

Voici le code JS :

// VARIABLE GLOBALE
var base_url = "http://localhost/";


var Xhr = null;
var Result = "";


function getXhr(){ // Verification de l'explorateur
    if(window.XMLHttpRequest){
        Xhr = new XMLHttpRequest(); // IE7 + Mozilla + GoogleChrome...
    } else if(window.ActiveXObject) {
        Xhr = new ActiveXObject("MSXML2.HTTP.3.0"); // IE6 et inf�rieur
    }
}

function roundTrip(file,param){
    getXhr();
    Xhr.open("POST",file,true);
    Xhr.send("tri="+param);
    alert("fin GET");    // Alert permettant le retour (si abscente => retour vide)
    return Xhr.responseText;
}

function select_tri(data){
    alert(data);
    Result = roundTrip(base_url+'outils/xxx_xxx.php',data);
    alert(Result);
}


Pour le PHP :

<?php
echo $_POST["tri"];
?>


Voilà je suis preneur si vous avez une solution, ou des idées :).

Cordialement,

5 réponses

Messages postés
153
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
17 juin 2011
2
Tu fais un return, donc arrête la fonction avant de faire l'alert
Essaye aussi de définir la fonction de traitement de la réponse avant d'envoyer la requête au serveur.
Messages postés
153
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
17 juin 2011
2
Normal, tu n'attends pas que le serveur ait terminé le traitement avant de vouloir afficher sa réponse.

	httpRequest.onreadystatechange = function()
{
if(httpRequest.readyState 4 && httpRequest.status 200)
{
//alert(httpRequest.responseText);
}

}


Pour plus d'explication : http://www.xul.fr/xml-ajax.html#ajax-xmlhttprequest
Messages postés
29
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
13 juillet 2011

function roundTrip(file,param){
    getXhr();
    Xhr.open("POST",file,true);
    Xhr.send("tri="+param);
    Xhr.onreadystatechange = function(){
        if(Xhr.readyState == 4){ //navigateur
            if(Xhr.status == 200){ //serveur
                return Xhr.responseText;
            	alert(Xhr.responseText);
            } else {
                switch(Xhr.status){
                    case 304 : "Champ 'if-modified-since' non modifie."; break;
                    case 403 : "Repertoire interdit."; break;
                    case 404 : "Page introuvable."; break;
                    case 500 : "Erreur de configuration"; break;
                    default : alert("Probleme Inconnu du Serveur"); break;
                }
            }
        }
    }
}



J'ai rajouté les éléments (merci pour ta page ;) ). Malheureusement, j'ai mon alert de Result est "undefined". Mon alert(Xhr.responseText); ne passe pas.

Auriez vous une idée ?
Messages postés
29
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
13 juillet 2011

Effectivement en inversant le return et l'alert, j'ai bien le retour de ma page PHP. En revanche dans ma variable de retour "Result", ça me donne "undefined". Même chose si je remplace le "Result" par une alert. Or mon "Xhr.responseText" me donne bien ma valeur attendue :s.
Messages postés
29
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
13 juillet 2011

J'ai rien dit, en fait il me manquait

return Xhr.onreadystatechange;

Vu que c'est lui qui récupère le résultat.

Merci de ton aide ;).