Temps d'exécution

Résolu
Bobshit75 Messages postés 29 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 13 juillet 2011 - 31 mai 2011 à 11:07
Bobshit75 Messages postés 29 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 13 juillet 2011 - 31 mai 2011 à 12:23
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

smathis Messages postés 153 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 17 juin 2011 5
31 mai 2011 à 12:11
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.
3
smathis Messages postés 153 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 17 juin 2011 5
31 mai 2011 à 11:38
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
0
Bobshit75 Messages postés 29 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 13 juillet 2011
31 mai 2011 à 11:55
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 ?
0
Bobshit75 Messages postés 29 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 13 juillet 2011
31 mai 2011 à 12:17
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bobshit75 Messages postés 29 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 13 juillet 2011
31 mai 2011 à 12:23
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 ;).
0
Rejoignez-nous