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 :

besoin de reinitialise XmlHttpRequest


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 76
    Points : 61
    Points
    61
    Par défaut besoin de reinitialise XmlHttpRequest
    bonjour, je suis entrain de faire un peu d'ajax, et j'ai un petit soucis.
    le probleme c'est qu'a chaque fois que je veux faire une requete je doit recreer un objet XmlHttpRequest ( ou l'equivelent ie)
    c'est normal ca? ou c'est moi qui l'utilise mal?
    si je ne refait pas mon `xhr = new XmlHttpRequest', la seconde requete est bien lancee, mais je n'ai aucun retour :s

    ce qui m'enbete, c'est que j'ajoute quelques fonctions et varaibles menbre a mon xhr, pour les fonctions, pas de probleme, elle ne change pas, par contre ca m'oblige a sauvegarder les valeurs des varaibles menbres, reinitialiser, puis restaurer les valeurs...

    donc si quelqu'un a une idee, faites savoir, merci
    2 n'est pas égal à 3, même pour de grandes valeurs de 2 ou de petites valeurs de 3

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Un Xhr = Une connection
    Dis-moi, IE accepte que tu rajoute des membres à un ActiveX Xhr ???
    Il me semblait que c'était refusé...
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 76
    Points : 61
    Points
    61
    Par défaut
    merci pour le renseignement
    pour ie, ca je sais pas, j'suis sous unix, je croyais que le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xml new = xmlHttpRequest()
    if(!xhr)xhr = new ActiveJeSaisPlusQuoi...
    suffisais, faudra que je test...
    sinon faudra que je fasse autrement.

    j'avais essaye de faire un objet qui ait un membre XmlHttpRequest. Le probleme, c'est que je ne pouvais pas me servir de this dans la methode onReadyStateChange, je voulais faire qqch du genre:

    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
     
    function MonObjet(){
      this.init = function(){
        this.xhr = new XmlHttpRequest();
        ...
      }
     
      this.request_queue = new Array();
      this.requestInProgress = false;
      this.queue_request = function(req){
        this.request_queue.puish(req);
      }
      this.execute_queue = function(){
        if(!this.requestInProgress){
          this.requestInProgress = true;
          this.init();
          this.req = shift(this.request_queue);
          this.xhr.open(this.req.url);
          this.send();
        }
      }
      this.xhr.onReadyStateChange = function(){
        if(<etat ok>){
          this.req.function(this.xhr.XmlResponse);
          this.requestInProgress = false;
          this.execute_queue();
        }
      }
    }
    ou req contient un donnee url, qui est l'url du script a recuperer et function qui est la fonction a appeller pour traiter l'xml renvoyer.

    j'sais pas si je me suis bien explique, mais vous croyez que c'est possible? (j'debute en javascript alors...) thx
    2 n'est pas égal à 3, même pour de grandes valeurs de 2 ou de petites valeurs de 3

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Petit problème...
    Dans ton onreadystatechange, ton "this" référence l'objet Xhr, pas ton objet conteneur...
    J'ai une solution c'est la création de fonction déléguée.
    Le code est dans le post "Code source" du forum, mais il est ancien et a été remodelé depuis... tu risques d'avoir du mal à tout comprendre...
    Sinon, voici le code final de mon projet Storing avec un objet Xhr qui fonctionne un peu comme le tien
    Il ne te reste plus qu'une chose à faire, créer un type qui herite de Xhr et lui mettre les fonctions qui t'intéresse !
    Comme l'héritage en JS est très mal connu, j'explique le principe (dans ce cas-ci, car normalement, il y a une autre subtilité)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    XhrInheritedClass = function () {
       // Ici l'objet Xhr ne demande pas d'argument, sinon tu aurais du faire
       // this.Xhr(arg0, arg1, ..., argN); à la place de this.Xhr();
       this.Xhr=Xhr; this.Xhr();
    }
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 76
    Points : 61
    Points
    61
    Par défaut
    wouhou, mais c'est super!!
    faut juste que je me trouve un cle usb pour emener ca chez moi..

    merci encore
    2 n'est pas égal à 3, même pour de grandes valeurs de 2 ou de petites valeurs de 3

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Grand grand merci !
    Lol, mais ce n'est qu'une infime partie de ce que j'ai déjà developpé
    Mais c'est vrai qu'avec ca, on peut faire pas mal de choses intéressantes...
    Surtout le CreateDelegate... surtout lui...

    /!\ J'ai remarqué une faute dans le fichier que je t'ai donné (je n'avais pas testé ma dernière mise-à-jour) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Erreur : missing ; before statement
    Fichier source : file:///G:/Mes%20documents/My%20Web%20Sites/Test2/Storing/Script.js
    Ligne : 278, Colonne : 65
    Code source :
    	this.EvalJS(Mode, Url, Async, Data, PrepareSub, UserName, Pwd) {
    ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	this.EvalJS=function (Mode, Url, Async, Data, PrepareSub, UserName, Pwd) {
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

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

Discussions similaires

  1. [AJAX] besoin d'aide pour xmlhttprequest
    Par argon dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 30/06/2006, 17h55
  2. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  3. Besoin du fichier d'aide du SDK DirectX7 (pour DirectDraw)
    Par Magus (Dave) dans le forum DirectX
    Réponses: 5
    Dernier message: 02/10/2002, 13h08
  4. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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