2017-04-07 25 views
1

私は無料のjqGrid 4.14.0を使用し、SOAPリクエストでserializeGridDataを使用するページがあります。 IE 11ではすべてが問題ありませんが、Edgeではグリッドに行がなく、ヘッダのみが表示されます。私はページをデバッグし、SOAPリクエストとレスポンスが正しいことを確認できます。どのように私は問題を見つけることができるか、またはこれの回避策になるはずです。 〜jqgridエッジブラウザの行がありません

+0

問題を再現するために使用できるデモを準備できますか?サーバーから取得したSOAP応答を含める必要があります。レスポンスはエコーサービス(またはテキストファイル)からロードして、問題をシミュレートすることができます。たとえば、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/ use/echo.html))を使用して、エコーサービスから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/そのような方法は安全ではありません。あなたが使用しているWebブラウザから、あなたが使用するバージョンのjQueryに依存します。必要なXMLノードを取得する独自のコールバック関数を使用することをお勧めします。機能getChildNodesByNameは、結果のデモは自分のコンピュータにインストールされているすべてのWebブラウザで動作しているようです

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; 
} 

ある場合たとえば、あなたは

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]" 
} 

を使用することができます。変更されたデモを参照してくださいhttps://jsfiddle.net/OlegKi/rugr8tc0/7/

関連する問題