2010-08-31 72 views
1

我有一些我在jQuery中解析的XML。IE8中的jQuery XML解析

<payload> 
    <value key="VehicleMake"> 
     <value key="description">Aeon</value> 
     <value key="code">18</value> 
    </value> 
    <value key="VehicleMake"> 
     <value key="description">Alfa Romeo</value> 

     <value key="code">120</value> 
    </value> 
</payload> 

除了IE(特別是IE8)所有的瀏覽器了以下工作:

$.ajax({ 
    type : "GET", 
    async : false, 
    url : "/services/vehiclemake", 
    success : 
     function(xmlResponse) { 
     var data = $("payload", xmlResponse).children("value").map(function() {  
      //IE8 fails on the next line 
      var code = $(this).children("value [key='code']").text(); 
      var desc = $(this).children("value [key='description']").text(); 
      return { 
       value : desc, 
       vehicleCode : code, 
       label : desc 
      }; 
     }).get(); 
    } 
}); 

在IE8它的分配不能「代碼」的說法:「類型錯誤:對象不支持此屬性或方法「。

如果我使用這種方法則是罰款:

$.ajax({ 
    type : "GET", 
    async : false, 
    url : "/services/vehiclemake", 
    success : 
     function(xmlResponse) { 
     var data = $("payload", xmlResponse).children("value").map(function() { 
      var code; 
      var desc;   
      var elements = $(this).children(); 
      for (i = 0; i < elements.length; i++) { 
       if(elements[i].attributes.getNamedItem("key").value == 'code') { 
        code = elements[i].text; 
       } 
       if(elements[i].attributes.getNamedItem("key").value == 'description') { 
        desc = elements[i].text; 
       } 
      } 
      var desc = $(this).children("value [key='description']").text(); 
      return { 
       value : desc, 
       vehicleCode : code, 
       label : desc 
      }; 
     }).get(); 

誰能告訴我,爲什麼標準的jQuery屬性選擇在IE8不工作? XML以正確的MIME類型返回。

謝謝。

回答

2

我不認爲你想在這裏的空間:

.children("value[key='code']") 

也許解決不了,但我認爲,需要固定反正。

+0

完美的快速反應。這就是它。很不錯的跨瀏覽器怪異。 – Damo 2010-08-31 07:32:26

+1

優秀!我不確定,因爲我是從我的手機發帖,我無法獲取信息。我很高興它幫助:) – Codesleuth 2010-08-31 08:07:41