2012-09-14

jQuery使用.html()或innerHTML將資料塞入table標簽的問題(與IE 6/7有關)

最近在寫用jquery .ajax()時發現一個古怪的問題。

網頁中,一開始我是這樣寫
<html xmlns="http://www.w3.org/1999/xhtml">
<script type="text/javascript" src="jquery.js"></script>
<head></head>
<script language="javascript">
<!--
$(document).ready(function(){
   $.ajax({
      url: 'something.asp',
      type: 'POST',
      error: function(xhr) {
         alert("error");
      },
      success: function(xhr) {
         $('#something').html(xhr);
      }
   });
});
-->
</script>
<body>
<table id="something">
</table>
</body>
</html>

這在firefox 1x跟chrome都跑的ok…ie9好像也ok…但ie8資料要塞進table(something)塞不進去。

找來找出才找到跟
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
有關…把這行放到<html…>之前就ok…

但過了一天,有人跟我說,同樣的網頁,a與b的電腦在something的table中看不到東西,但c的電腦是ok的…後來a跟b跟我反應之後才知道a跟b的電腦中的ie是6跟7…

當下只想到叫他們更新到ie8…但卻有人說不可能叫每一個來看網頁的人都更新吧…(為啥不行,不應該使用的東西就不應該使用呀…)

好吧…只好先來去查看看是哪邊的問題…

本來是以為是不是jquery .ajax()的問題,但測過別的東西是ok的…
再來想到是.html()的問題,但換了innerHTML之後也一樣不行。

後來找到http://blog.jeffbeck.info/?p=7網頁,才知道,原來在ie6/7中,table中的東西僅屬「讀取」用…你想塞東西進去是不被允許的…

最後,就到something.asp改成reponse一整個table(原本只是reponse<tr><td>...</td></tr>)…然後原來的something(table)改為something(div)…ie6/7就正常了

沒有留言: