유효한 JSON 응답
- json 응답은 올바른 json 형식의 문자열 이어야 한다.
{ total: "xxx", page: "yyy", records: "zzz", rows : [ {id:"1", cell:["cell11", "cell12", "cell13"]}, {id:"2", cell:["cell21", "cell22", "cell23"]}, ... ] }즉, 위와 같이 표시되는경우 작동되지 않으며, 아래와 같이 올바르게 정의해야 한다.
{ "total": "xxx", "page": "yyy", "records": "zzz", "rows" : [ {"id" :"1", "cell":["cell11", "cell12", "cell13"]}, {"id" :"2", "cell":["cell21", "cell22", "cell23"]}, ... ] }
d 속성
- ajax complete 에서 ajax success 이벤트로 전환 시 jqGrid parse 함수를 건너뛰며, 이 함수는 응답에서 d 속성을 자동으로 감지한다. (특정 시스템에서 사용됨)
1004lucifer
이 문제를 해결하려면 jsonReader가 이 속성을 올바르게 해석할 수 있도록 변경해야 한다.
jQuery("#gridid").jqGrid({ ... jsonReader : { root: "rows", page: "page", total: "total", records: "records", repeatitems: true, cell: "cell", id: "id", userdata: "userdata", subgrid: {root:"rows", repeatitems: true, cell:"cell" } }, ... });위의 코드를 아래와 같이 변경해야 한다. (셀 속성을 변경해서는 안된다)
jQuery("#gridid").jqGrid({ ... jsonReader : { root: "d.rows", page: "d.page", total: "d.total", records: "d.records", repeatitems: true, cell: "cell", id: "id", userdata: "userdata", subgrid: {root:"d.rows", repeatitems: true, cell:"cell" } }, ... });
loadComplete 변경
- loadComplete 이벤트에 대한 문서에서 응답에 대한 요청을 매개변수로 전달한다.
v3.6.5 이전에는 response를 사용하려면 responseText 속성을 사용해야했다.
v3.6.5 부터는 datatype 매개변수에 따른 jQuery에서 자동변환된 서버의 데이터이다.
예를들어 datatype: json 을 사용한다고 했을때 v3.6.5 이전에는 아래와 같았다.
jQuery("#gridid").jqGrid({ ... datatype : "json", loadComplete : function (response) { // to convert the request using JSON.parse to JavaScrip object you do maybe this: var myrequest = JSON.parse(response.responseText); .... }, ... });v3.6.5 부터는 JSON.parse 가 필요없어졌다.
jQuery("#gridid").jqGrid({ ... datatype : "json", loadComplete : function (response) { // no need to use JSON.parse: var myrequest = response; .... }, ... });
참고
- http://www.trirand.com/jqgridwiki/doku.php?id=wiki:upgrade_from_3.6.4_to_3.6.5
댓글
댓글 쓰기