8792 sujets

Développement web côté serveur, CMS

Bonjour,

Je ne sais pas trop si je dois poster ici, donc dédolé au cas où... Voici mon problème : j'essaye de me dépatouiller pour faire 1 sorte de lecteur RSS en ligne grâce aux HttpRequest, et ma requête ne fonctionne pas 'à tous les coups'. Je ne comprends pas pourquoi à chaque fois que j'actualise ma page, ma requête ne fonctionne pas (et des fois c'est 2 à 3 fois de suite), et ensuite elle marche, puis elle marche plus, puis elle remarche...

Mon code pour la requête est le suivant :
function loadTextDoc(url,ma_fonction) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
      try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
          http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
      }
  }

  if (!http_request) {
    alert('Giving up  [decu] Cannot create an XMLHTTP instance');
    return false;
  }
  http_request.onreadystatechange = eval(ma_fonction);
  http_request.open('GET', url, true);
  http_request.send(null);
  alert('appel ajax');
}


Mon alert('appel_ajax'); est là pour m'aider à me repérer. J'ai aussi une alert('traitement_rss'); dans ma_fonction et celle ci se déclenche bien à chaque fois, mais l'alert('traitement_rss_ok') me montre que la requête est plutôt 'aléatoire'...

Voici le code de ma fonction :

function traitement_rss(nb_item) {
alert('traitement_rss');
  if (http_request.readyState == '4') {
    if (http_request.status == '200') {
      var div = document.getElementById('ajax_div');
      var titre = document.getElementById('titre_popup');
      var desc_rss = document.getElementById('desc_rss');
      div.innerHTML = http_request.responseText;
      div.style.height = "auto";
      div.style.display = "block";
      div.style.top = "25%";
      for (i=0;i<nb_item;i++) {
        var item = "rss_ititle_"+i;
        document.getElementById(item).style.display = "block";
      }
      alert('traitement_rss_ok');
    } else {
      alert('Un problème a été rencontré.');
    }
  }
}


Ma requête est appelée à partir d'un Onclic sur une balise <span>. Ma fonction me permet de mettre en forme le flux RSS lu afin de présenter les informations correctement...

Bref, tout ça est très mystérieux pour moi... Je crois que je dois m'y prendre un peu comme un pied, mais là j'avoue être complètement dépassé par ce problème 'irrégulier'....

Merci si vous avez un tuyau Smiley cligne

Fred.
Bonjour,
Il aurait peut-être mieux valu poster dans le salon javascript, mais bon, c'est pas grave.

Est-u sûr que :
xhr.onreadystatechange = eval(ma_fonction);

est valide ? parce que ça me semble curieux...

Deuxièmement, il se peut que ce soit un problème de cache, surtout si tu appelles ce script à intervalles réguliers.