2010-12-03 16 views
0

Dans mon projet, je développe une interface web pour l'appareil. L'heure et le nom de l'appareil sont mis à jour sur la page Web à l'aide d'AJAX.IE n'affiche pas le texte mis à jour par Javascript

Lors de la première exécution, lorsqu'une page Web est créée (mise à jour), la page est correctement affichée par IE8 mais à l'actualisation/révision, l'heure s'affiche correctement mais le nom du périphérique (qui change occasionnellement) est absent. J'utilise la propriété innerHTML pour mettre à jour le texte.

Je ne rencontre pas ce problème lorsque j'accède à des pages sur Google Chrome. J'ai également désactivé le cache en utilisant l'en-tête HTML. L'en-tête HTML est donné ci-dessous

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
<meta http-equiv="pragma" content="no-cache" /> 
<meta http-equiv="cache-control" content="no-cache" /> 

script:

function OnComplete (xmlDoc) { 
    /* ToDo: Add complete event here or remove method 
      xmlDoc contains the received XML Document */ 
    try{          
     var txt=""; 
     x = xmlDoc.getElementsByTagName("DateTime"); 
     document.getElementById("idClock").innerHTML = x[0].firstChild.nodeValue; 
     x = xmlDoc.getElementsByTagName("TCOLOR"); 
     document.getElementById("idClock").style.color = x[0].firstChild.nodeValue;    
     x = xmlDoc.getElementsByTagName("deviceNameType"); 
     alert(x[0].firstChild.nodeValue); 
     document.getElementById("deviceName").innerHTML = x[0].firstChild.nodeValue; 
     x = xmlDoc.getElementsByTagName("ALARM"); 
     var alarmImg = document.getElementById("idImgAlarm"); 
     var value = x[0].firstChild.nodeValue; 
     switch(value){ 
      case '0': 
       SetClassName(alarmImg, 'replace', 'hidden', 'inline'); 
       break; 
      case '1': 
       alarmImg.src = 'Alarm.gif'; 
       SetClassName(alarmImg, 'replace', 'inline', 'hidden'); 
       break; 
      case '2': 
       alarmImg.src = 'Alarm_static.jpg'; 
       alarmImg.className ="p4 pr10 f_r pointer inline"; 
       break; 
      default: 
       alert("default"); 
       break; 
     } 
    }catch(e){/*alert('ERROR\n'+ e);*/} 
} 

XML Exemple:

<?xml version="1.0" encoding="ISO-8859-1"?><rtc><DateTime>2010-12-03 13:01:39 (UTC)</DateTime><TCOLOR>#0</TCOLOR><deviceNameType>AA1J1Q01A1, MYDEVICE</deviceNameType><ALARM>1</ALARM></rtc> 

L'alerte() fonctionne avec du chrome, mais pas IE. Comment puis-je résoudre ce problème dans Internet Explorer 8?

+0

En-tête HTML s'il n'est pas affiché correctement: – Dhaval

+0

Le doctype n'a probablement rien à voir avec cela. Veuillez indiquer le code JavaScript que vous utilisez. – PleaseStand

+0

@Dhaval, je l'ai corrigé pour vous - vous devez mettre en surbrillance le "code" dans votre question et cliquez sur le bouton Code (avec 0 et 1 dessus). Ou indentez chaque ligne avec 4 espaces. –

Répondre

0

Si vous utilisez jQuery du tout (je sais que vous avez dit JS) essayez ceci:

$.ajaxSetup({ 
    cache: false 
}); 
+0

ce qui précède ne fonctionnait pas? – benhowdle89

0

requêtes AJAX se sont mises en cache dans Internet Explorer. Vous devez définir le cache sur false: http://api.jquery.com/jQuery.ajax/

La solution de benhowdle89 affecte les paramètres ajax globaux, donc toute requête ajax sur la page ne mettra pas en cache les résultats.