2010-01-31 26 views
3

原始腳本這是我的分頁腳本,我不知道爲什麼即時得到這些錯誤在IE:爲分頁

function GetXmlHttpObject(){ 
    var a; 
    try{ 
    a=new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
    catch(d){ 
    try{ 
     a=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    catch(c) 
    {a=false;} 
    } 
    if(!a&&typeof XMLHttpRequest!="undefined") 
    { 
    try{ 
     var a=new XMLHttpRequest(); 
    } 
    catch(d){ 
     var a=false; 
    } 
    } 
    return(a); 
} 
var i=0;var ii=0;var b=0;var bb=0; 

function ForumPagination(c){ 
    document.getElementById("forumsblock").style.display="none"; 
    document.getElementById("WaitDiv").innerHTML="<img src='images/loading.gif' >"; 
    xmlHttp=GetXmlHttpObject(); 
    if(xmlHttp==null){ 
    alert("Your browser does not support AJAX!"); 
    return; 
    } 
    var a="indext.php?name=Dynamic_forums&pagenum="+c; 
    xmlHttp.open("GET",a,true);xmlHttp.onreadystatechange=ReplyLoading;xmlHttp.send(null); 
} 

function ReplyLoading(){ 
    if(xmlHttp.readyState==2||xmlHttp.readyState==4){ 
    var a=xmlHttp.responseText; 
    document.getElementById("WaitDiv").innerHTML=""+a; 
    } 
} 

腳本在FF罰款

順便說一句,當我換頁,我不能再這樣做。

頁面錯誤細節

消息: '的getLoad' 是未定義的線: 105字符:311代碼:0 URI: http://nukelearn.com/

消息:到 完整必要的數據這樣的操作是不但可用 。

行:9字符:74代碼:0 URI: http://nukelearn.com/includes/199233334JOE.js

消息:所需的對象行:3字符: 1代碼:0 URI: http://nukelearn.com/includes/199233334JOE.js

消息:所需的對象行:3字符: 1代碼:0 URI: http://nukelearn.com/includes/199233334JOE.js

消息:所需的對象行:3字符: 1代碼:0 URI: http://nukelearn.com/includes/199233334JOE.js

消息:所需的對象行:3字符: 1代碼:0 URI: http://nukelearn.com/includes/199233334JOE.js

消息:所需的對象行:3字符: 1代碼:0 URI: http://nukelearn.com/includes/199233334JOE.js

消息:Object required Line:3 Char: 1代碼:0 URI: http://nukelearn.com/includes/199233334JOE.js

消息:Object required Line:3 Char: 1代碼:0 URI: http://nukelearn.com/includes/199233334JOE.js

+0

你可以考慮用換行符和縮進來發布代碼嗎? – nickf 2010-01-31 14:15:43

+1

添加換行符和縮進以使代碼隱約可讀 – andynormancx 2010-01-31 14:24:59

回答

4

請你幫個忙,並使用jQuery:你將不必再處理瀏覽器的具體問題了(至少對JavaScript)

+0

jQuery的縮小版本爲23KB – Pepper 2010-01-31 14:24:31

+0

farshad:取決於您對您的時間有多重視,23KB似乎是一筆交易,永遠不必擔心這些東西 – 2010-01-31 14:35:54

0

替換爲你的第一個功能:

function GetXmlHttpObject(){ 
    return !!window.XMLHttpRequest ? window.XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"); 
} 

希望這是你的頭痛之源。

+1

謝謝,這是東西,但沒有與烏爾代碼 – Ghazanfari 2010-01-31 14:25:16

+0

工作似乎是功能上相同作爲現有的代碼(除非它不檢查Msxml2.XMLHTTP)。 – andynormancx 2010-01-31 14:30:29

1

你第一個錯誤是因爲在你的頁面本聲明:

window.onload = getLoad; 

沒有的getLoad功能,這就是爲什麼這個錯誤發生。該錯誤不是特定於IE的,無論瀏覽器如何,都存在同樣的問題。

第二組錯誤是由於誤解了XmlHttp中不同readyState值的含義而引起的。這條線是問題:

if(xmlHttp.readyState==2||xmlHttp.readyState==4){ 

若要從MSDN文檔引用,readyState的2:

2,送出的發送方法已經 調用。 responseText不可用。 responseBody不可用。

您似乎正在處理readyState 2作爲請求已完成(然後嘗試和使用responseText屬性),我期望是什麼導致的問題。更改該行:

if(xmlHttp.readyState==4){ 

爲不同的readyState值的討論,請參見本question(摘要:僅用不完4)。

爲了重申其他答案所說的話,請使用jQuery或至少另一個小型庫來抽象化X瀏覽器的XmlHttp nastiness。