2011-01-27 4 views
0

Я вижу странную проблему с моим кодом ниже. Содержимое, полученное через xmlHttpRequest, не отображается в IE8 после нажатия ссылки. Он отображается только после перемещения мыши/курсора после нажатия ссылки.Ответ AJAX не отображается сразу в IE8

<html> 
    <head> 
     <script language="javascript"> 
     var xmlHttpfunction; 

     function ShowHint(str,id,currentid,count) 
     { 
      for(i = 0; i < count; i++) 
      { 
       if (i == currentid) 
       { 
        cellImg(i,'images/head_on.jpg'); 
       } 
       else 
       { 
        cellImg(i,'images/btn_img.jpg'); 
       } 
      } 
      xmlHttp = GetXmlHttpObject(); 

      if (xmlHttp == null) 
      { 
       alert ("Browser does not support HTTP Request"); 
       return; 
      } 

      var url = "myurl.php"; 
      url = url+"?id="+id; 
      xmlHttp.onreadystatechange = stateChanged; 
      xmlHttp.open("GET",url,true); 
      xmlHttp.send(null); 
     } 

     function cellImg(idCell, imgName) 
     { 
      document.getElementById(idCell).style.background = "url(" + imgName + ")"; 
     } 

     function stateChanged() 
     { 
      if (xmlHttp.readyState === 1) 
      { 
       document.getElementById("element").innerHTML = "<p align='center'><img src='images/wait.gif'></p>"; 
      } 
      else if (xmlHttp.readyState === 4) 
      { 
       document.getElementById("element").style.display = "block"; 
       document.getElementById("element").innerHTML = xmlHttp.responseText; 
      } 
     } 

    </script> 
    </head> 
    <body> 
    <div id="navigation"> 
     <ul > 
      <li id=1 > 
       <a href="#" onclick="ShowHint('menu',42,1,18);return false;"> 
       Item 1 
       </a> 
      </li> 
      <li id=2 > 
       <a href="#" onclick="ShowHint('menu',11,2,18);return false;"> 
       Item 2 
       </a> 
      </li> 
      <li id=3 > 
       <a href="#" onclick="ShowHint('menu',12,3,18);return false;"> 
       Item 3 
       </a> 
      </li> 
     </ul> 
    </div> 
    <div class="element" id="element"> 
    </div> 
    </body> 
</html> 

Работает над Firefox, Safari, Chrome и Opera. Но в IE8 содержимое не отображается (хотя оно загружается во внутреннийHTML элемента div id = "), если нет движения курсора, после нажатия ссылки.

Я попытался поставить предупреждения и отладки через отладчик сценариев IE8 (в Tools-> DeveloperTools), но не смог найти причину проблемы.

Может ли кто-нибудь помочь мне в этом, пожалуйста?

Большое спасибо, sgullap

ответ

0

Проверьте, чтобы увидеть, если возможно, responseText от АЯКС вызова начинается с возврата каретки. Сегодня у меня была аналогичная проблема (так я нашел этот вопрос во время поиска в Интернете) и обнаружил, что мой код HTML случайно начался с пустой строки на целевой странице вызова ajax. Удаление этой дополнительной строки заставило innerHTML правильно установить и отобразить.

Я не уверен, что я понимаю, ПОЧЕМУ это привело к тому, что IE не отображал внутреннийHTML, который я назначил для div, но теперь знаю, что вы можете вдвойне избегать пустых строк в верхней части любого вывода HTML, полученного через ajax!

Смежные вопросы