我有一个页面,我使用免费的jqGrid 4.14.0并使用带有SOAP请求的serializeGridData。在IE 11中,一切都很好,但在Edge中,网格没有行,只显示了标题。我调试了页面,可以看到SOAP请求和响应都没问题。任何人都可以提示我如何找出问题或者应该解决这个问题的方法。感谢名单。
答案 0 :(得分:0)
您需要解析的XML数据包含名称空间。您使用"rs\\:data"
和"z\\:row"
等转义字符串来解析数据。
xmlReader: {
root: "rs\\:data",
row: "z\\:row",
repeatitems: false,
id: "[ows_ID]"
}
在您的演示https://jsfiddle.net/psturm/rugr8tc0/中。这样的方式是不安全的,这取决于您使用的版本和jQuery,以及您使用的Web浏览器。我建议你使用自己的回调函数,它获取所需的XML节点。例如,您可以使用
xmlReader: {
root: function (node) {
//return node.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild;
return getChildNodesByName(
node.firstChild.firstChild.firstChild.firstChild.firstChild,
"rs:data")[0];
},
row: function (node) {
return getChildNodesByName(node, "z:row");
},
repeatitems: false,
id: "[ows_ID]"
}
函数getChildNodesByName
是
function getChildNodesByName (node, name) {
var items = [], children = node.childNodes, iChild, nChildren = children.length;
for (iChild = 0; iChild < nChildren; iChild++) {
child = children[iChild];
if (child.nodeType === 1 && child.nodeName === name) {
items.push(child);
}
}
return items;
}
最终的演示似乎适用于我的计算机上安装的所有Web浏览器。请参阅修改后的演示https://jsfiddle.net/OlegKi/rugr8tc0/7/