Probleme XMLhttpRequest safari/Chrome

Signaler
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
Bonjour, cela fait maintenant 6 mois que je bloque sur un truc dont je n'ai toujours pas trouvé la solution. J'ai une fonction javascript avec requetes AJAX qui marchent bien sous tous les navigateurs, excepté Chrome et Safari.
Je vous copie/colle le début du code pour que vous voyez q'il n'y a pas d'rreur (la suite n'est pas essentielle puiqu'elle ne s'execute pas)
function ChangeConfig()
{
  var hdd;
  var video;
  var os;
  var soft;
  var xdata = null;
  var resultat_xml = null;

  var dom_hdd = document.getElementById( 'hdd' );
  var dom_video = document.getElementById( 'video' );
  var dom_memoire = document.getElementById( 'memoire' );
  var dom_pcr = document.getElementById( 'pcr' );
  var dom_os = document.getElementById( 'os' );
  var dom_soft = document.getElementById( 'soft' );

  if( dom_hdd != null  && dom_video != null  && dom_memoire != null && dom_pcr != null && dom_os != null && dom_soft != null )
  {
    hdd = getSelected( dom_hdd );
    video = getSelected( dom_video );
    pcr = getSelected( dom_pcr );
    VideOptions( dom_hdd );
    VideOptions( dom_video );
    VideOptions( dom_memoire );
    VideOptions( dom_pcr );
    VideOptions( dom_os );
    VideOptions( dom_soft );

    var requeteAJAX = XMLHTTP;
    requeteTEXT = '/html/requete_client_sql2xml.php?requete=configurateur_station&rattachement=<?php echo $CodeProduitSurMesure; ?>';
                                                                                                     
    requeteAJAX.open('GET', requeteTEXT, false );
    requeteAJAX.send(null);

    if( ( resultat_xml requeteAJAX.responseXML ) null )
    {
// Jusqu'ici tout va bien
      resultat_xml = new ActiveXObject("Microsoft.XMLDOM");
// Là ça ne passe pas
      resultat_xml.loadXML(requeteAJAX.responseText);
    }

    xdata = resultat_xml.getElementsByTagName('data');


Merci beaucoup d'avance.
Ju'

4 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
as tu essayais sous FireFox ?!!!!
if( ( resultat_xml requeteAJAX.responseXML ) null ) {
// Jusqu'ici tout va bien
  resultat_xml = new ActiveXObject("Microsoft.XMLDOM");
// Là ça ne passe pas
  resultat_xml.loadXML(requeteAJAX.responseText);
}
ce code est EXCLUSIF IExplorer donc c'est normal....



;O)
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
4
d'accord. Oui ça marche sous FF, IE et Opéra, mais comme requeteAJAX.responseXML != null on ne rentre pas dans la boucle, donc ça marche :)
Mais entre temps, j'ai trouvé hier soir pourquoi le parser XML ne passe pas sous Safari et Chrome, j'ai remplacé

if( ( resultat_xml requeteAJAX.responseXML ) null )
{
  resultat_xml = new ActiveXObject("Microsoft.XMLDOM");
  resultat_xml.loadXML(requeteAJAX.responseText);
}


par :
NavName = navigator.appName;
if ( NavName.toLowerCase() "netscape" || NavName.toLowerCase() "safari" || NavName.toLowerCase() == "chrome" )
{
  requeteAJAX.overrideMimeType('text/xml; charset=iso-8859-1');
}


Or, j'ai un soucis à ce niveau, c'est quen avigator.appName renvoie "NetScape" meme sous safari et Chrome. Quelq'un connait-il une solution pour reconnaitre bien le navigateur sous JS ?

Merci
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
dans ton cas tu n'as que deux possibilités, c'est IE ou les autres
pour tester IE utilises donc ActiveXObject
if( window.ActiveXObject){
 // ICI c'est IE
}
else {
 // ICI c'est les autres
}


;O)
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
4
Ok merci au moins ça je le sais maintenant ;)