11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde,

J'ai un problème que j'arrive pas à cerner, en fait j'envoie mes paramètres par un POST et j'attends la réponse que je reçois jamais.

Pire, mon readyState reste bloqué à un!

Je suis pas un grand expert en javaScript alors je sais d'où ça vient mon problème.

Si vous pouvez déjà me dire ça veut exactement quoi le readyState==1 ça serait pas mal. Moi je comprend par ça que ma demande est envoyée et que je dois attendre la retour du serveur.

Quand je vérifie les logs d'accès je vois que j'ai bien les fameux 200 et 4 qui me font rêver.

Qu'en pensez-vous?

Merci
Simon
Je sais pas si cela peut vous inspirer mais en mode synchrone tout marche à merveille.

Voici à quoi ressemble mon code:


Ajax.Requete=Class.create();

Ajax.Requete.prototype={

  demarrage: function(url, options) {
    this.transport = Ajax.getTransport();
    this.setOptions(options);
    this.lancer(url);
    },


  setOptions: function(options) {

             this.options = {

                             method:       'post',
                             asynchronous: true,
                             contentType:  'application/x-www-form-urlencoded',
                             encoding:     'UTF-8',
                             parameters:   '',

                            }

             Object.extend(this.options, options || {});

             this.options.method = this.options.method.toLowerCase();

             },


  lancer:function(url) {
    this.url = url;
    this.method = this.options.method;
    this.params = this.options.parameters;
                        
    this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);

    this.setHeaders();

    this.transport.send(this.params);

    this.transport.onreadyStatechange=this.reponse();

         },


  setHeaders:function() {

       this.transport.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
       this.transport.setRequestHeader('Accept', 'text/javascript, text/html, application/xml, text/xml, */*');
       if (this.method == 'post') { 
       this.transport.setRequestHeader('Content-type', this.options.contentType +'; charset='+ this.options.encoding ); 
       if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) this.transport.setRequestHeader('Connection', 'close');        
           }

         },


  reponse:function() {

      if(this.transport.readyState==4) { if (this.transport.status==200) this.options.onComplete.apply(this); }

//C'est ici que ça ne change pas du tout, j'ai tjrs 1

    else  $('nbrFlash').innerHTML=this.transport.readyState;
    
        }

}



Et voila pour lancer ma requête je fais ça:



new Ajax.Requete('infoLive.php',{

                                         method:'post', 
                                         asynchronous:true, 
                                         contentType:'application/x-www-form-urlencoded', 
                                         encoding:     'UTF-8', 
                                         parameters: 'pseudo=sarahprincess',
                                         onComplete: function() { alert(this.transport.responseText);}

                                         });




Donc Firebug me dit rien du tout.