【发布时间】:2010-08-31 15:21:09
【问题描述】:
我有一些要在 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 中,分配给“代码”失败,提示:“TypeError:对象不支持此属性或方法”。
如果我使用这种方法就可以了:
$.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 中不起作用?正在以正确的 mime 类型返回 XML。
谢谢。
【问题讨论】:
标签: jquery xml jquery-selectors