jqgrid在Edge浏览器中没有行

时间:2017-04-07 09:36:22

标签: jqgrid

我有一个页面,我使用免费的jqGrid 4.14.0并使用带有SOAP请求的serializeGridData。在IE 11中,一切都很好,但在Edge中,网格没有行,只显示了标题。我调试了页面,可以看到SOAP请求和响应都没问题。任何人都可以提示我如何找出问题或者应该解决这个问题的方法。感谢名单。

1 个答案:

答案 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/