begin process at 2010 02 10 12:27:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Problème de compatibilité

 > 

XMLHTTPRequest & FF


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

XMLHTTPRequest & FF

lundi 18 mai 2009 à 14:26:41 | XMLHTTPRequest & FF

spinosaurus

Bonjour à toutes et tous
je galère depuis plusieurs jours pour rendre compatible multi-navigateur un de mes scripts utilisant du XHR. Je suis allé fouiner un peu partout et je n'ai rien trouvé qui fonctionne correctement. Je veux remplir une div avec du code très simple (une table et une select avec méthode onclick). Rien de bien méchant. Ca marche sous IE, Opera, Chrome, Safari et Maxthon. Et pas sous FF ni NN. Je n'arrive pas à remplir le innerHTML à l'écriture ni, a fortiori, relire le textContent.

ci-après, extrait du code js qui s'occupe de dette fonction
<texte>
 
  function getText(id) {
    if(document.all) {
      return document.getElementById(id).innerText;
    }
    else {
      return document.getElementById(id).textContent;
    }
  }

  function videCases() {
    document.personne.titre.value = "";
    document.personne.nom.value = "";
    document.personne.prenom.value = "";
    document.personne.adresse1.value = "";
    document.personne.adresse2.value = "";
    document.personne.codepost.value = "";
    document.personne.ville.value = "";
    document.personne.pays.value = "";
    document.personne.telephone1.value = "";
    document.personne.telephone2.value = "";
    document.personne.sondage.value = "";
    document.personne.CliSOFFRES.value = "";
  }

  function ChangePers(num) {
    SetDisplay("choixMail","none");
    var liste = getText("listePersonnes");
    var ind = 14*num;
    var personnes = liste.split(";");
    var nbPers = 1*personnes[0];
    if (num<nbPers) {
      for (var t=1;t<5;t++) {
        var tit = getElm("tit"+t);
        if (tit.value==personnes[2+ind].rtrim()) tit.checked = true;
      }
      document.personne.nom.value = personnes[3+ind].toUpperCase().rtrim();
      var len = personnes[4+ind].length;
      document.personne.prenom.value = personnes[4+ind].charAt(0).toUpperCase()+personnes[4+ind].substr(1,len-1).rtrim();
      document.personne.adresse1.value = personnes[5+ind].rtrim();
      document.personne.adresse2.value = personnes[6+ind].rtrim();
      document.personne.codepost.value = personnes[7+ind].rtrim();
      document.personne.ville.value = personnes[8+ind].toUpperCase().rtrim();
      document.personne.pays.value = personnes[9+ind].toUpperCase().rtrim();
      document.personne.telephone1.value = personnes[10+ind].rtrim();
      document.personne.telephone2.value = personnes[11+ind].rtrim();
      document.personne.sondage.value = personnes[12+ind].replace(/,/g,";").rtrim();
      document.personne.CliSOFFRES.value = personnes[12+ind].replace(/,/g,";").rtrim();
      document.personne.idv.value = personnes[13+ind].rtrim();
      document.personne.ccli.value = personnes[14+ind].rtrim();
      getElm("listePersonnes").innerHTML = "";
      getElm("choixMail").innerHTML = "";
   }
    // si num=nbPers, c'est une nouvelle personne à cette adresse mail
  }
 
 function AffMail() {
   var liste = getText("listePersonnes");
   var personnes = liste.split(";");
   var nbPers = 1*personnes[0];
   var div = getElm("choixMail");
   if (nbPers==1) ChangePers(0);    
   else if (nbPers>0) {
     var nbElm = 1*nbPers+1;
     var select = "<select size='"+nbElm+"' onclick='ChangePers(this.options[selectedIndex].name);'>\r";
     var optSel = "<option selected name=\"";
     var option = "<option name=\"";
     var ferme = "\">\r";
     var noitpo = "</option>\r";
     var tceles = "</select>\r";
     var index = 1;
     var listeOpt = "";
     for (i=0;i<nbPers;i++) {
       index = 3+(14*i);  // les coordonnées se répètent toutes les 14 valeurs
       var champsAff = "";
       for (j=2;j<9;j++) champsAff = champsAff + personnes[index+j]+"&nbsp;";
       listeOpt = listeOpt+option+i+ferme+personnes[index+1]+"&nbsp;"+personnes[index]+"&nbsp;"+champsAff+noitpo;
     }
     i++;
     listeOpt = listeOpt+option+i+ferme+"Nouvelle personne &agrave; cette adresse mail"+noitpo;
     select = select + listeOpt + tceles;
     div.innerHTML = "<table><tr><td>"+select+"</td></tr></table>";
     SetDisplay("choixMail","");
   } // si 0, on vide
   else videCases();
 } 
 
 function checkMail(inst) {
   var email = getElm("email").value;
   var param = "inst="+inst+"&email="+email;
   Send_XHR_Object("site/getmail.php?"+param,"listePersonnes","D");
   AffMail();
 }

et dans le html, j'ai la déclaration des 2 div avec style='display:none'
</texte>

Toute aide est la bienvenue

Spinosaurus

lundi 18 mai 2009 à 14:39:01 | Re : XMLHTTPRequest & FF

Bul3

Membre Club


Bonjour,

>>Je suis allé fouiner un peu partout et je n'ai rien trouvé qui fonctionne correctement.
???
ajax, ça fonctionne avec "tous" les navigateurs actuels
si ça ne fonctionnait pas avec FF, ça se saurait !

pas regardé très loin ce que tu nous met...
ne serait-ce que parce qu'on n'a pas Send_XHR_Object
dont dépend pas mal de choses

et loin d'être sûr que tu localises d'ailleurs bien ton souci...

en attendant plus de données :

NavigateursQuelques Explications
Chrome
contrôler page actuelle / Options pour développeurs
/ Console Javascript
FireFox
Outils / Console d'erreurs
et mieux : télécharger FireBug
Internet
Explorer
activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux (pour IE < 8) : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS
K-Meleon
Outils / Console d'erreurs
Opera
Outils / Avancé / Console d'erreurs
Safari
Debug / Show JavaScript Console
° modifier Fichier com.apple.Safari.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\Preferences\
y ajouter <key>IncludeDebugMenu</key>
<true/>



Cordialement [mon Site] [M'écrire] Bul
lundi 18 mai 2009 à 15:03:38 | Re : XMLHTTPRequest & FF

Bul3

Membre Club
et déjà...
   Send_XHR_Object("site/getmail.php?"+param,"listePersonnes","D");
   AffMail();
AffMail va être lancé avant que Send_XHR_Object ne réponde
sans même parler si ajax est en synchrone ou pas !
lundi 18 mai 2009 à 15:42:44 | Re : XMLHTTPRequest & FF

spinosaurus

Bul,
j'ai déjà regardé la console d'erreurs. Mis à part quelques styles css ignorés, pas d'erreur.
La fonction send_XHR_object attend la fin de la réponse (booléen mis à false systématiquement).
Je vais installer FireBug et voir plus loin. Je vais tester K-Meleon aussi.
Merci de tes réponses.

Spinosaurus
lundi 18 mai 2009 à 16:09:27 | Re : XMLHTTPRequest & FF

Bul3

Membre Club
>>La fonction send_XHR_object attend la fin de la réponse
peut-être,  sûrement, je veux bien te croire sur parole
mais je te disais : AffMail va être lancé avant que Send_XHR_Object ne réponde
tel que tu le fais!
le traitement de AffMail doit être fait dans la fonction
appelée dans "xhr".onreadystatechange lorsque que "xhr".readyState == 4
lundi 18 mai 2009 à 17:07:27 | Re : XMLHTTPRequest & FF

spinosaurus

Voilà, j'ai changé mon code selon tes conseils.
<debut>
function checkMail(inst) {
   var email = getElm("email").value;
   var param = "inst="+inst+"&email="+email;
   var xhr_object = null; 
   if (window.XMLHttpRequest) {
     xhr_object = new XMLHttpRequest();  // Firefox    
   }
   else if (window.ActiveXObject) {
     xhr_object = new ActiveXObject("Microsoft.XMLHTTP");  // Internet Explorer
   }
   else {
     // XMLHttpRequest non supporté par le navigateur
     alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
     return;
   }
   var laDiv = getElm("listePersonnes");
   xhr_object.open("GET", "site/getMail.php?"+param, false); 
   xhr_object.onreadystatechange = function() {
     if (xhr_object.readyState==4) {
       laDiv.innerHTML = xhr_object.responseText;
       AffMail();
     }
   }
   xhr_object.send(null);
 }
<fin>

Fonctionne toujours sous IE, Opera, Safari, Maxthon et Chrome mais pas sur FF et NN, ni sur K-Meleon que je viens d'installer.


Spinosaurus
lundi 18 mai 2009 à 17:24:26 | Re : XMLHTTPRequest & FF

spinosaurus

Correction de l'énoncé: le pb est même en amont de la div contenant une table et une select. Le première div contient tout simplement une string!
Ce n'est même pas du html.
Spinosaurus
mardi 19 mai 2009 à 10:01:52 | Re : XMLHTTPRequest & FF

Bul3

Membre Club
qu'est-ce qui ne fonctionne pas ?
l'affichage dans la div ? si oui : erreur css ou html pour FF ?
lance le php directement ( sans passer par ajax )
        le résultat est correct ?
tu as fait des alert au fûr et à mesure ?
     alert(xhr_object.responseText;) ?  par exemple, c'est ok ?
tu as fait du pas à pas ?
tu peux nous donner une adresse pour tester ?
    car comme "on n'a pas tout".... difficile de voir.

mardi 19 mai 2009 à 10:18:46 | Re : XMLHTTPRequest & FF

spinosaurus

Bonjour,

ce qui ne fonctionne pas, en effet, c'est le remplissage de la div, ou plutôt la récolte du contenu (responseText). Elle est normalement cachée, mais pour des raisons de debug, je la laisse visible. A part le "style='display:none' " quand elle est cachée, elle n'a aucun style rattaché (puisqu'elle n'est pas visible en temps normal). Le php lancé par la requête fonctionne sans problème. Alert(xhr_object.responseText) fonctionne sous IE et autres mais pas dans le cas de FF. Je ne peux pas mettre d'adresse à dispo car ce script n'est pas encore en ligne. Pour le pas-à-pas, je ne sais pas comment faire, je n'ai pas l'habitude de FireBug, je viens à peine de l'installer.
le code de la div (on ne peut faire plus simple) <div id='listePersonnes'></div>
Spinosaurus

mardi 19 mai 2009 à 18:07:33 | Re : XMLHTTPRequest & FF

spinosaurus

Hello?

Y'a personne aujourd'hui?
Demain, alors?

Spinosaurus


1 2

Cette discussion est classée dans : var, document, value, personnes, ind


Répondre à ce message

Sujets en rapport avec ce message

addition successive d'un champ de formulaire [ par Serialsiner ] Bonjour,Je cherche à additionner des heures et minutes situées dans 2 champs différents et à afficher le résultat dans un troisième champ résultat.Le Mise en forme conditionnelle [ par fdthierry ] Bonjour, J'ai un tableau qui m'affiche toute une série de champ, à un champ précis nommé txtDoc j'ai un événement onchange.J'aimerais que celui ci se texte dans div au curseur [ par tonytruand ] bonsoir,J'ai encore un soucis, j'aimerais envoyer du texte dans un div à l'endroit du curseur comme cela se fait déjà dans un textarea (vu sur forum), Problème cahce avec IE [ par goulouk ] Bonjour,je voudrais savoir comment empécher de mettre une page en cache, ou alors obliger IE à recharger la page sans la prendre dans le cache.Je vous pb d'insertion [ par neotetsuo34 ] Bonjour,j'ai un probleme d'insertion d'une image sélectionné avec tinyMCE. En fait j'ai une page image qui selectionne une image et quand je clique su incrementer [ par tonytruand ] bonjour;j'ai un souci d'incrémentation. Dans une function ci dessous, j'aimerai que le i se traduise par 0 puis 1 puis 2 etc.J'ai bien essayer le  for Probleme de debutant [ par darkwhite ] Salut a tous. J'ai commencer le Javascript depuis une semaine donc je debute tout juste.J'ai commencé ce programme simple : .:Darlwhite:. Aide envoi formulaire asynchrone [ par shadow1779 ] Bonsoir,je souhaite envoyer un formulaire via xmlhttprequest afin de vérifier par une page php si certains champs n'existent pas deja dans la base de sujet formulaire [ par limaseb ] J'ai un probleme sur mon formulaire aimerais le faire apparaitre en email outlook mais en colonne et non en ligne avec entre les informations & ces po Alarm [ par DomJ ] Bonjour, je voudrais faire un script que, on met l'alarm à telle heure, puis à cette heure précise, (si la fenêtre est ouvert, ça ouvre un "alert()" a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,416 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales