2017-04-07 127 views
1

我有一個頁面,我使用免費的jqGrid 4.14.0和使用serializeGridData與SOAP請求。在IE 11中,一切都很好,但在Edge中,網格沒有行,只顯示標題。我調試了頁面,可以看到SOAP請求和響應是正常的。任何人都可以提供一個提示,告訴我如何找出問題所在,或者應該怎樣解決這個問題。感謝名單。jqgrid邊緣瀏覽器中沒有行

+0

您可以準備演示,它可以用來重現問題嗎?您應該包含從服務器獲得的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

+0

這是一個演示https://jsfiddle.net/psturm/rugr8tc0/ –

回答

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/

相關問題