IE 8 JQuery .find()不处理XML字符串
JQuery似乎无法在返回的XML字符串中找到我的选择器字符串。 它似乎在Chrome中运行,但由于浏览器身份validation问题,我无法在同一环境中进行调试。
我知道过去曾问过这类问题,但我没有找到任何具体适用于我情况的问题。
从SOAP请求提供以下XML响应; 我相信<z:row
piece是重要的:
"
“
以下例程旨在迭代此响应并查找关联值。 它完全无法执行,就像xData.XML是空的一样(我也试过xData.xml – 没有变化)。
$(xData.XML).find("z\\:row").each(function() { quantityOneArray[i] = parseFloat($(this).attr("ows_Quantity")); quantityTwoArray[i] = parseFloat($(this).attr("ows_Quantity2")); i++; alert("xData "+ i + ": "+xData.XML); });
这是一个带有几个手表的IE8调试器窗口截图的链接 。 xData.xml
字符串突出显示。 这个断点紧跟在我上面的迭代程序之前。
- 我的选择器格式不正确吗?
- 我的选择器是否需要额外的逃脱?
- 我在查看错误的返回值或对象吗?
我绝对是在拔头发。 我在Chrome中将选择器更改为“行”并且它可以正常工作; 在IE8中没有任何区别。
另外,请查看此博客文章以查看一个有效的示例。 最初我使用的是“xData.responseXML”,但它在调试器中显示为“Undefined”。
看起来你正在将一个xml字符串传递给$()
,这会导致jQuery将该xml字符串转换为HTML。 现代浏览器倾向于允许它并使用“新”html元素,而较旧的浏览器(IE6,7,8)会阻塞它们。
尝试使用
var xmlDoc = $.parseXML(xData.XML); $(xmlDoc).find("z\\:row").each(...
试试这个,
镀铬/火狐:
xml.children [0] .childNodes [1] .innerHTML
IE8 + / Safari浏览器:
xml.childNodes [0] .childNodes [1] .textContent
IE8:
xml.documentElement.childNodes [1]的.text;
示例代码在这里,
var xml = $ .parseXML(XMLDOC);
Var xmlNodeValue =“”;
if(userAgent.match(“msie 8.0”)){
xmlNodeValue = xml.children [0] .childNodes [1] .innerHTML;
} else {// IE8 +
xmlNodeValue = xml.childNodes [0] .childNodes [1] .textContent;
}
- 通过ajax执行发布时,返回错误请求而不是JSON结果
- window.toString.call在IE8中未定义
- jQuery出错(在IE8中)
- JSF2.0 + Primefaces 3.0.1 + jquery 1.6.4 + p:commandLink + IE8抛出对方法或属性的意外调用
- jQuery.change + inline onchange fn()导致fn执行两次
- jquery .on(’input’)不会单独在ie8中被触发
- 使用jQuery更新flashvars并重新加载flash
- Jquery.get()在IE8 / 9中不起作用。 不会加载未修改的缓存页面304
- 如何在IE8中摆脱iframe的边框