1
我有一個頁面,我使用免費的jqGrid 4.14.0和使用serializeGridData與SOAP請求。在IE 11中,一切都很好,但在Edge中,網格沒有行,只顯示標題。我調試了頁面,可以看到SOAP請求和響應是正常的。任何人都可以提供一個提示,告訴我如何找出問題所在,或者應該怎樣解決這個問題。感謝名單。jqgrid邊緣瀏覽器中沒有行
我有一個頁面,我使用免費的jqGrid 4.14.0和使用serializeGridData與SOAP請求。在IE 11中,一切都很好,但在Edge中,網格沒有行,只顯示標題。我調試了頁面,可以看到SOAP請求和響應是正常的。任何人都可以提供一個提示,告訴我如何找出問題所在,或者應該怎樣解決這個問題。感謝名單。jqgrid邊緣瀏覽器中沒有行
您需要解析的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/
您可以準備演示,它可以用來重現問題嗎?您應該包含從服務器獲得的SOAP響應。可以從Echo服務(或從文本文件)加載響應來模擬問題。例如,演示https://jsfiddle.net/OlegKi/zqLp4yrg/43/使用'url:「/ echo/json /」,postData:{json:JSON.stringify(serverResponse)},mtype:「POST」,數據類型:「json」。可以使用'url:/ echo/xml /'和'postData:{xml:soapResponseAsString},mtype:「POST」,數據類型:「xml」'(參見[here](http://doc.jsfiddle.net/使用/ echo.html))從Echo服務加載XML數據。 – Oleg
這是一個演示https://jsfiddle.net/psturm/rugr8tc0/ –