2017-04-07 4 views
1

무료 jqGrid 4.14.0을 사용하고 serializeGridData를 SOAP 요청과 함께 사용하는 페이지가 있습니다. 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))를 사용하여 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 버전에 달려 있습니다. 필요한 XML 노드를 가져 오는 자체 콜백 함수를 사용하는 것이 좋습니다. 기능 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; 
} 

결과 데모 내 컴퓨터에 설치되어있는 모든 웹 브라우저에서 작동하는 것 같다입니다 예를 들어,

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/