2012-02-24 4 views
0

JSON 호출로 jqGrid가 비어 있습니다. 비록 그것은 datatype = 'jsonstring'으로 작동하지만 json 타입으로는 작동하지 않습니다. 여기 내 JSONjqGrid가 JSON 호출로 비어 있습니다.

{ 
    "d": { 
     "total": 6, 
     "page": 1, 
     "records": 6, 
     "rows": [ 
      { 
       "id": 1, 
       "Name": "James", 
       "EMPID": "0000000056", 
       "EMPDATE": "", 
       "JOBTYPE": "REQ", 
       "DEPTID": "FIN", 
       "STATUS": "P1" 
      }, 
      { 
       "id": 2, 
       "Name": "James", 
       "EMPID": "R2", 
       "EMPDATE": "", 
       "JOBTYPE": "REQ", 
       "DEPTID": "FIN", 
       "STATUS": "P1" 
      }, 
      { 
       "id": 3, 
       "Name": "James", 
       "EMPID": "V2", 
       "EMPDATE": "", 
       "JOBTYPE": "VOU", 
       "DEPTID": "FIN", 
       "STATUS": "" 
      }, 
      { 
       "id": 4, 
       "Name": "James", 
       "EMPID": "V1", 
       "EMPDATE": "", 
       "JOBTYPE": "VOU", 
       "DEPTID": "FIN", 
       "STATUS": "" 
      }, 
      { 
       "id": 5, 
       "Name": "James", 
       "EMPID": "009017", 
       "EMPDATE": "", 
       "JOBTYPE": "PY", 
       "DEPTID": "", 
       "STATUS": "V2" 
      }, 
      { 
       "id": 6, 
       "Name": "James", 
       "EMPID": "009018", 
       "EMPDATE": "", 
       "JOBTYPE": "PY", 
       "DEPTID": "", 
       "STATUS": "V1" 
      } 
     ] 
    } 
} 

하고 자바 스크립트에서 내있는 jqGrid 호출 내가 잘못 여기 어딘지 알려주세요

function getgrid() 
    { 

    $("#list").jqGrid({ 
    url:'http://10.240.26.41/GetGridFields', 
    datatype: 'json', 
    mtype: 'GET', 
    ajaxGridOptions: { contentType: 'application/json; charset=utf-8' }, 
    //serializeGridData: function (postData) { 
    // return JSON.stringify(postData); 
    //  }, 
    jsonReader: { repeatitems: false, root: "d.rows", page: "d.page", total: "d.total", records: "d.records" }, 
    colModel: [ 
     { name: 'id', key: true, width: 60, align: "center", hidden: false }, 
     { name: 'Name', width: 80, sortable: false, hidden: false }, 
     { name: 'EMPID', width: 180, sortable: false, hidden: false }, 
     { name: 'EMPDATE', width: 180, sortable: false, hidden: false }, 

     { name: 'JOBTYPE', width: 180, sortable: false, hidden: false }, 
     { name: 'DEPTID', width: 180, sortable: false, hidden: false }, 
     { name: 'STATUS', width: 180, sortable: false, hidden: false } 
    ], 
    rowNum: 10, 
    rowList: [10, 20, 300], 
    pager: "#pager", 
    viewrecords: true, 
    gridview: true, 
    rownumbers: true, 
    height: 230, 
    caption: 'Emp Detail' 
    }) 

    } 

입니다. 그것은 jsonstring과 잘 작동합니다.

답변

0

을 수 작업 때문에 jslint를 사용하여 JSON 결과를 확인하는 것이 좋습니다. 데모에서는 주요 문제에 대해 중요하지 않은 최소한의 최적화 변경 만 수행했습니다.

그래서 난 당신이 때문에 the same origin policy의 또 다른 IP 호스트로 Ajax 호출을받을 수 없기 때문에 하나의 전체 URL의 사용에 문제가 (당신이 '/GetGridFields' 대신 'http://10.240.26.41/GetGridFields'의 사용해야합니다)이 있는지, 가정합니다. 다른 가능한 이유는 'Content-Type' 또는 다른 HTTP 헤더가 틀렸기 때문일 수 있습니다. Fiddler, Firebug 또는 IE 또는 Chrome의 개발자 도구 ('네트워크'탭 참조)를 사용하여 HTTP 헤더를 검사 할 수 있습니다.

어떤 식 으로든 loadError 처리기를 jqGrid에 포함시키는 것이 좋습니다. 자세한 내용은 the answer을 참조하십시오.

+0

유용한 제안을 보내 주셔서 감사합니다. 귀하의 제안에 따라 LoadErrod 처리기를 추가하고 Firefox에서 다음 오류가 발생합니다 .HTTP 상태 코드 : 200 textStatus : parsererror errorThrown : SyntaxError : JSON.parse : unexpected character – JDev

+0

@JDev : 오신 것을 환영합니다! 나는 당신이 서버로부터 데이터를 성공적으로받는 결과를 해석하고 데이터는 JSON 데이터로 올바르게 해석 될 것이다. 그러나 데이터에는 구문 오류가있다. 이제 우리는 솔루션에 더 가깝습니다. 서버 응답을 포함하는'jqXHR.responseText'를 검사해야합니다. 데이터가 귀하가 게시 한 JSON 데이터와 일치하지 않는다고 가정합니다. 당신은 정확하게'jqXHR.responseText'의 분석에 정확히 있어야합니다. 또는 Fiddler, Firebug 또는 이전에 작성한 개발자 도구를 사용하여 동일한 데이터를 얻을 수 있습니다. – Oleg

+0

또한 방화범 내가 볼 수 --Response 헤더 콘텐츠 인코딩 \t gzip을 콘텐츠 길이 콘텐츠 유형 \t text/html과; CHARSET = UTF-8 및 응답 탭에서 HTML 태그를 가져 오는 중 HTML (세 번째 탭) 아래에서 JSON 문자열을 가져옵니다. HTML 대신 JSON을 사용하면 안됩니까? 위의 JSON 데이터는 HTML tab.it에서 복사 한 것이고 위의 HTML 탭과 동일합니다. – JDev

0

난 당신이 jsonstring를 사용하여 당신이있는 jqGrid이 JSON 데이터를 읽을 수 the demo에 볼 수있는 방법 형식 유형의 문제

+0

나는 그것을했으며 괜찮 았어. 한가지 더, 내 페이지에서 나는 getJSON을 통해 또 다른 Ajax 호출을하고있다. 이것은 여기에 문제가 될 수 있습니다. 다른 JSON 호출이 정상적으로 작동합니다. – JDev

+0

jqgrid는 .ajax()를 사용합니다. getJSON()은 .ajax90 래퍼입니다. 시도해 볼 수 있습니다. –

+0

.ajax()에 대한 다른 호출이 변경되었지만 여전히 작동하지 않습니다. – JDev

관련 문제