2010-09-08 61 views
0

這是我的代碼:(更確切地說,其躲閃一部分)IE 8中的AJAX不一致?

if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
    var requisicao=new XMLHttpRequest(); 
} else { 
    var requisicao=new ActiveXObject("Microsoft.XMLHTTP"); 
} 

確定。有時候這工作得很好,但有時JavaScript調試器,在IE告訴我:

對象不支持此屬性或方法model.js行59字符3

即達...

var requisicao=new XMLHttpRequest(); 

什麼錯誤的是,有時IE 8接受這一點,並繼續前進,但有時它扼流圈,並行不通?

歡迎任何幫助

在此先感謝

+2

IE的報告錯誤行基本上是隨機數。你最好使用腳本調試器,讓它跳到錯誤真正發生的地方,而不是試圖找出這個神話般的「第59行」的位置。 – 2010-09-08 03:37:14

+0

這就是我所做的。我使用的是腳本調試器,它是IE 8開發者工具的一部分。它準確告訴我行號,甚至跳轉到執行代碼並突出顯示問題。所以我認爲它是正確的......另外,因爲我在jQuery中遇到了這個問題,但現在我改回到了常規的javascript來試圖找出問題。 – 2010-09-08 03:39:52

回答

2

編輯:顯然,在這種情況下,Internet Explorer的行號是正確的。這似乎是Internet Explorer 8的常見問題。這裏有一個可能的解決方案:Ajax app works in some browers, not others

這裏是代碼的相關部分:

try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } 
catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } 
catch (e) { try { xmlhttp = new XMLHttpRequest(); } 
catch (e) { xmlhttp = false; }}} 

不幸的是,Internet Explorer的行號並不總是準確的,因爲它們是基於你的代碼自身的內部序列。錯誤信息可能來自不同的行(希望在第59行附近)。

我會檢查你要調用的對象的方法,因爲任何原因可以設置爲不同的值。

+0

是嗎?起初,我使用jQuery。然後,調試器告訴我問題出在jquery.js文件中,在這個區域大約: xhr:A.XMLHttpRequest ... 現在我使用普通的JavaScript,它說的相同?相同的錯誤和相同的命令?那不是巧合? – 2010-09-08 03:42:46

+1

@Felipe:我用XMLHttpRequest搜索了這個錯誤,發現這個問題:http://stackoverflow.com/questions/1482177/problem-with-ie8-using-ajax。你可以從那裏嘗試解決方案(它有更多的代碼,但你可以拿出你需要的部分)。 – 2010-09-08 03:48:38

+0

謝謝,我會看看 – 2010-09-08 03:49:27