Partage
  • Partager sur Facebook
  • Partager sur Twitter

ajax et Jquery: détruire l' XHR?

[débutante JQuery]

Sujet résolu
Anonyme
    21 juillet 2010 à 10:06:51

    Bonjour à tous,

    je voudrais savoir si on peut détruire une requete ajax quand on utilise Jquery. Je m'explique, avec un petit bout de code:

    var xhr;
    
    function detruire_xhr(){
       if(typeof(xhr)!='undefined')
       {
          xhr.abort();
          delete xhr;
       }
    }
    
    function nouveau_xhr(){
       detruire_xhr();
       if (window.XMLHttpRequest){   
          xhr = new XMLHttpRequest();
       }else if (window.ActiveXObject){
          xhr = new ActiveXObject("Microsoft.XMLHTTP");
       }
    }
    

    A chaque fois que j'ai un résultat, j'appelle detruire_xhr(), et a chaque requete, j'appelle nouveau_xhr(). Je ne sais pas si c'est indispensable mais je crois que ça évite de surcharger le serveur, car parfois les requetes peuvent de "superposer":

    Pour mieux comprendre, voila le site en question: lrg-lingerie. Donc vous avez au milieu une image qui change régulièrement, et à droite de cette image des petites vignettes sur lesquelles vous pouvez cliquer, ce qui appelle une autre requête avec les même objet XHR.
    Alors en gros, tout détruire à chaque fois évite d'avoir plusieurs requêtes qui se chevauchent (le script complet ici).

    Mais, ça marche pas sous IE! donc je voudrais utiliser Jquery pour ça, j'ai réussi en utilisant la fonction .load mais au bout d'un moment ça "fait tout péter" et le site rame pire qu'affreux, parce que je sais pas comment faire ce que je faisais à la base (tout casser!) :euh: ...

    Est-ce que cette méthode de tout détruire à chaque fois est mauvaise?
    Est-ce qu'il existe un moyen d'utiliser .abort et delete avec Jquery?


    J'ai vraiment du mal à intégrer jquery dans ma p'tite tête, j'ai regardé du coté de $.ajax mais tout ce que je trouve c'est en anglais, alors je comprends pas grand chose.... moi, tout ce que je sais faire c'est un truc du genre:
    $('#accroche').load('diaporama.php',function(){
       $('#accroche').fadeIn('slow');
    });
    
    Alors effectivement "j'écris moins pour en faire plus", mais dans ce peu de lignes je sais pas à quel moment je dois "détruire" la requête....
    'voyez, j'en suis vraiment aux bases... :honte:

    merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      21 juillet 2010 à 17:01:51

      Salut,
      Je connais rien (et j'ai pas envie de connaitre :p ) en jQuery mais la méthode abort() fonctionne sous IE, le problème et à chercher ailleurs. Que te dis l'outil de développement d'IE ? (F10 ou outil>outil de développement) ??
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        22 juillet 2010 à 11:18:33

        oui, sous IE le problème ne venait pas de la fonction abort(), j'avais comme erreur "Cet objet ne gère pas cette propriété ou cette méthode" donc j'ai pensé que ça venait de l'objet XHR qui était pas bien instancié...
        Donc j'ai voulu passer à JQuery pour avoir un objet propre (vu que tout est géré automatiquement) (et là tout le serveur s'est mis à planter parce que les requetes s'accumulaient)
        Donc je suis revenue à ma bonne vieille méthode et j'ai cherché l'erreur... Qui en fait n'était pas mon objet XHR mais la ligne "contenu = xhr.responseText" et puis le fait que je faisais un fadeIn en même temps... enfin bon, c'est reglé!

        Mais je voudrais bien quand même passer à JQuery... mais ça attendra que je me sois un peu mieux fait la main dessus :p

        Merci pour ta réponse :)
        • Partager sur Facebook
        • Partager sur Twitter

        ajax et Jquery: détruire l' XHR?

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown