2011-04-05 80 views
0

在我的主網頁更新的div我有一個div:JSP + AJX:使用innerHTML的問題

<div id = "content"><%@include file ="loadData.jsp" %></div> 

的loadData.jsp有<table> ... </table>然後一個div叫pager做表分頁:

<div id"pager"> ... </div> 

所以,當我點擊我的主網頁上的某些鏈接阿賈克斯將設置請求加載此loadData.jsp,我會做這樣的事情

document.getElementById("content").innerHTML=xmlhttp.responseText; 

更新div內容的內容。我現在的問題是它僅適用於Chrome和Firefox,然後在IE中運行時出現此未知運行時錯誤。我有谷歌這個問題主要是因爲innerhtml,因爲我的輸出有一個div呼叫尋呼機。任何解決方案由於

var xmlhttp 
function loadContent() 
{ 
    xmlhttp=GetXmlHttpObject(); 
    if (xmlhttp==null) 
    { 
     alert ("Your browser does not support Ajax HTTP"); 
     return; 
    } 
    var url="loadData.jsp"; 
    xmlhttp.onreadystatechange=getOutput; 
    xmlhttp.open("GET",url,true); 
    xmlhttp.send(null); 
} 
function getOutput() 
{ 
    if (xmlhttp.readyState==4) 
    { 
     document.getElementById("content").innerHTML=xmlhttp.responseText; 
    } 
} 

function GetXmlHttpObject() 
{ 
    if (window.XMLHttpRequest) 
    { 
     return new XMLHttpRequest(); 
    } 
    if (window.ActiveXObject) 
    { 
     return new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    return null; 
} 

所以在我的主文件,我有此鏈接

<a href="javascript:loadContent()>All</a> 

然後有一個

<div id = "content"><%@include file ="loadData.jsp" %></div> 

所以,當我點擊鏈接這些內容將加載新的數據,它的工作原理在Firefox和鉻,但不是在IE瀏覽器,內loadData我有這個

<table width="900" border="0" class="sortable" id="menuTable"> 
<thead> 
    <tr align="left"> 
     <th width="60">ID</th> 
     ... 
     <th width="80">...</th> 
    </tr> 
</thead> 
<tbody> 

... 
</table> 
<div id="pager" class="pager"> 
       <form> 
        <select class="pagesize"> 
         <option value="5">5 per page</option> 
         <option value="10" selected>10 per page</option> 
         <option value="15">15 per page</option> 
         <option value="20">20 per page</option> 
        </select> 
       </form> 
    </div> 
+1

請提供更多的代碼,目前還不清楚如何確定問題。我可以知道你怎麼稱呼這個請求並將它存儲在你的div中。如果它只在Chrome或FF中工作,可能只使用XMLHttpRequest()而不檢查ActiveXObject(「Microsoft.XMLHTTP」) – ace 2011-04-05 04:37:02

+1

您是否有使用jQuery的選項?如果你這樣做,那麼使用它將是值得的,因爲你不必擔心跨瀏覽器問題。 – Pushkar 2011-04-05 07:57:08

+0

你遇到的錯誤究竟是什麼?並且是IE導致問題的所有版本。看起來你的代碼很好,試着在你的GetXmlHttpObject() – ace 2011-04-06 02:43:25

回答

0

我認爲你的代碼很好,添加一些斷點或警報消息來知道問題出在哪裏。那麼最好你有這樣的代碼試試看。

function GetXmlHttpObject() { 
     var xmlHttp; 
     try { 
       // for firefox, Opera 8.0+, Safari 
       xmlHttp = new XMLHttpRequest(); 
     } catch (e) { 
       // InternetExplorer 
       try { 
         xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
       } catch (e) { 
         try { 
           xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
         } catch (e) { 
           alert("Browser does not support AJAX!"); 
           return null; 
         } 
       } 
     } 
     return xmlHttp; 
} 

而且在getOutput檢查XHR狀態xmlhttp.status==200。在這個函數中放置一些警告消息,這樣你會看到你的代碼是否在這裏傳遞。