2009-06-22 83 views
2
<?xml version="1.0" ?> 
<NBR> 
    <resultGroups> 
    <result>Hello</result> 
    </resultGroups> 
</NBR> 

我有一個在PHP ike中創建的n xml。我正在重新將此XML轉換爲javascript,並試圖訪問節點「結果」的值使用PHP XML IE問題

alert($(xmlObj).children('result').text()); 

在Firefox中它的工作正常。但在IE中它什麼也沒給出......

我該如何解決這個問題?

+0

也許這應改爲:「IE問題:不符合標準」 :-) – 2009-06-22 13:30:03

+0

沒有文件有.xml文件擴展名?如果擴展名與實際的文件類型不匹配,IE就會出現問題。 – scunliffe 2009-06-22 13:34:03

+0

@Jweede - 是的,我同意。今天我剛遇到一個「IE7不吃餅乾」的問題。它只是簡單地拒絕了我的PHP應用程序的cookies! – mauris 2009-09-05 15:12:15

回答

1

可能是因爲您沒有發送正確的XML Content-Type標頭。您應該向Content-Type: text/xml發送XML內容。您還應該檢查是否在標題和文件中都設置了正確的字符集。如果JS代碼是正確的,並且您的XML響應是有效的,那麼IE應該能夠解析正確的XML響應。

0

您是否在嘗試解析數據之前嘗試過使用查找?

var node_text = $(xmlObj).find('result').text(); 
alert(node_text); 

否則我會建議試圖結果標籤切換到不同的東西(如theresult) - 大家都知道IE喜歡做奇怪的事情! :)

1

我的猜測會與文本()函數有關。我自己是一個原型人,但我在前一段時間遇到了與IE類似的問題。它來自我試圖從DOM中的元素中提取值textContent。我可以在所有其他瀏覽器中獲得價值,但IE讓我感覺很好。運行一些測試後,這就是我想出的:

IE不支持element.textContent。在大多數瀏覽器中,如FireFox,您將能夠從元素中拉取textContent值。

<p id="my_element">this is my element</p> 
alert($('my_element').textContent); // will alert "this is my element" 

在IE瀏覽器,你需要使用element.innerHTML。這將返回你想要的值。現在,我認爲text()正在返回textContent值,這就是爲什麼你沒有得到骰子。

<p id="my_element">this is my element</p> 
alert($('my_element').innerHTML); // will alert "this is my element" 

希望這有助於!

0

如果<結果>裏面< resultGroups>,然後嘗試:

alert($(xmlObj).children('resultGroups').children('result').text()); 

,或者你可以嘗試:

alert($($($(xmlObj).children('resultGroups')).children('result')).text()); 

甚至:

alert($($(xmlObj).children('result')).text()); 

讓我知道如果任何這些工作。

1

確保你的標題中指定了你指定的Content-Typecharset,並且你的c harset(如果使用utf-8)是utf-8不是utf8。 IE不承認後者,也懶得告訴你。

所以,你希望你的頭,確定如下:

Content-Type: application/xml; charset=utf-8