0

試圖做一個基本的XML檢索。代碼在Firefox和Opera中按照預期工作,意味着它以XML文檔中的「標題」節點的文本值進行警報。但在IE7中,我從這一行中獲得了「需要的對象」。getElementsByTagName對象是否必需?真的卡住了!

x=xhttp.responseXML.getElementsByTagName("title")[0].childNodes[0].nodeValue; 
    alert(x); 

順便說一句,它與responseText(和一個txt文件)工作正常。但我使用ActiveX對象得到在IE中工作...奇怪的B/C我認爲它支持XMLHttprequest對象。也許這跟它有關係?

[編輯]

確定我取代了線與此

x=xhttp.responseXML.childNodes.length; 
    alert(x); 
在FF

有2個節點,在IE中有0。所以,很顯然它不能讀取0的childNodes。與空白有關,我猜?是什麼賦予了?

[更新]

這是所有關於我如何使用msxml.DOMDocument和Msxml.XMLHTTP ActiveXObjects無知。我在下面的鏈接瞭解這些對象:

Program with DOM in JScript

,並會回答我的問題在幾天之內...

回答

1

我想通了。我沒有提到到目前爲止,我正在開發硬盤上的文件夾。這是問題所在。我想引用「Ultimator」,其答案,我發現了webdeveloper.com在這個線程:http://www.webdeveloper.com/forum/showthread.php?t=147342

IE7的原生XMLHttpRequest是無能爲力的,甚至在同一個目錄中的文件,然而,在相同的情況下,的ActiveX會能夠正常服務於IE7。 原因是因爲IE7的XMLHttpRequest對象僅限於Web。 因此,您的「在IE7中拒絕訪問」錯誤,因爲您的代碼中的IE7是通過XMLHttpRequest而不是ActiveX服務的。 另一方面,Firefox的XMLHttpRequest對象同時允許本地請求和Web上的請求。

其實,我甚至都不明白爲什麼需要這個對象。有一段時間我轉而使用了msxml.DOMDocument.3.0對象,並且我在本地工作。然後我繼續閱讀關於如何在IE7中支持XMLHttpRequest,所以我又回到了這個對象的工作。通過MSDN上的教程看完後,我發現他們建議建立一個「虛擬目錄」,並使用上

http://localhost. 

的文件,然後我有了想法,以及我爲什麼不能只是請求指向某處互聯網?我做了:在w3schools上的示例XML文件。你猜怎麼了?它在IE7中工作,我可以通過selectSingleNode獲取我想要的文本。但在Firebug中它說,xmlDoc.responseXML爲空。有趣的...

所以最終我決定在我的機器上激活IIS(我有Vista Home Premium)並使用本地主機。有效! FF,IE,Chrome和Opera以相同的方式訪問這些文件。所以我學到的教訓是:您可以使用localhost來模擬服務器的行爲,這在本地開發時非常有用。

FF沒有訪問遠程文件,而IE能夠訪問它,我真的不明白......哦,現在我的問題已經解決了,我將回報未來的挫折。謝謝閱讀!

0

沒有理由爲什麼不應該工作,例如:

var xml = response.responseXML, 
    node = xml.getElementsByTagName('child')[0]; 

alert(node.childNodes.length); 

使用以下XML

<root> 
    <child> 
     <foo /> 
    </child> 
</root> 

當我運行在IE7中,它正確顯示1.您是否正確地將響應的內容類型設置爲text/xml?