2012-11-17 54 views
1

工作,我有以下XML作爲一個字符串:JQuery。文本()似乎並不IE8

<battery_content> 
    <last_update>2012-15-09-22-40</last_update> 
    <total_downloads>234</total_downloads> 
    ...... 
</battery_content> 

我從一個Ajax請求的XML,我將它存儲在sXMLData。我做了一個快速window.alert(sXMLData),一切都很好。

當我在IE8中運行下一個代碼時,它似乎無法工作。 Chrome和Firefox工作。

window.alert("last_update" + $(sXMLData).find("last_update").text()); 

我似乎無法弄清楚爲什麼。這種方法不適用於IE8嗎?如果是這樣,我該如何解決這個問題?

+3

首先使用['$ .parseXML'](http://api.jquery.com/jQuery.parseXML/)正確解析XML即可解決問題。 – Jon

+0

請填寫您的評論作爲答案,以便我可以接受。謝謝一堆。 – AndreiBogdan

+0

完成,很高興提供幫助。 – Jon

回答

3

處理「XML作爲一個愚蠢的字符串」正確的方法是通過$.parseXML率先通過它:

window.alert(
    "last_update" + $($.parseXML(sXMLData)).find("last_update").text()); 

但是,你不會需要做到這一點,如果手動

  • 要麼服務器返回一個XML Content-Type,
  • 您使用獲取XML的AJAX請求AJAX選項指定應將響應視爲XML

如果服務器在您的控制之下,請修復它以返回正確的內容類型。如果沒有,請使用替代解決方案。我建議僅當您從第三方代碼中獲取有理由不想觸摸的字符串時,才手動解析XML。

+0

** 1。**我想指出的是,AJAX的核心並不區分XML或其他任何格式。這是jQuery的工作。 AJAX命名嚴重缺陷的另一個原因。 ** 2。**我沒有看到任何人爲什麼要手動解析來自AJAX調用的XML。我會建議在任何時候都正確使用dataType選項。 – Christian

+0

@Christian:當說「AJAX」時,我的意思是'$ .ajax'或任何其他jQuery函數的實現。 – Jon

+0

因爲它是'AJAX!== $ .ajax',你可能想糾正你的答案...... – Christian