jqGrid는 jQuery.ajax을 사용하여 서버와 통신합니다. JSON 형식으로 데이터를 보내려면 다음 두 가지 작업을 수행해야합니다.
- JSON 형식으로 데이터를 인코딩해야합니다. 일반적으로 인코딩에는
JSON.stringify
이 사용됩니다.
contentType
옵션을 "application/json"
또는 "application/json; charset=utf-8"
값으로 설정해야합니다. 요청에 HTTP 헤더 ContentType
이 포함됩니다. 헤더는 서버에 전송 된 데이터가 JSON 형식으로 인코딩되었음을 서버에 알립니다.
임의로 dataType: "json"
옵션을 사용할 수도 있습니다. Ajax 호출에 대한 응답에도 JSON 인코딩 데이터가 포함되어야하는 경우 옵션을 사용합니다.
이제 위의 요구 사항을 jqGrid 내부에서 구현하는 방법에 대해 설명합니다. jqGrid는 많은 곳에서 jQuery.ajax를 사용할 수 있습니다. jqGrid의 레트로 버전 4.4.4를 사용합니다. 훨씬 적은 가능성을 가지고 있으며, 아주 오래된 웹 브라우저, 오래된 jQuery 등의 시대에 개발되었습니다. 나는 jqGrid 4.4.4의 발행일에 Chrome 24, Firefox 18, Internet Explorer 10, Safary 6.0.2 중 하나를 사용했음을 상기시킵니다. IE8 (및 인터넷 익스플로러)은 데스크톱에서 주로 사용되는 웹 브라우저 (Windows에서만)였습니다. 하나는 Chrome 54, Firefox 50, Microsoft Edge 38, Internet Explorer 11, Safari 10에서 작동합니다. jqGrid 4.4.4가 최신 웹 브라우저와 잘 작동 할 것이라고 정말로 생각하십니까? free jqGrid의 최신 버전 (4.13.5)으로 업데이트하는 것이 좋습니다. 당신은 여전히있는 jqGrid 4.4.4을 사용하는 경우
당신은
{
label: "Edit Actions",
name: "actions",
width: 100,
formatter: "actions",
formatoptions: {
keys: true,
delOptions: {
serializeDelData: function (postData) {
return JSON.stringify(postData);
},
ajaxDelOptions: {
contentType: "application/json"
}
}
}
}
하나는 사용하는 다른 방법에 의존했다 다양한 plases에 delGridRow
의 옵션을 설정해야 사용해야합니다. 문제는 직접, 간접적으로 delGridRow
메서드를 사용하는 것입니다. 예를 들어 formatter: "actions"
, navGrid
, inlineNav
은 인라인 편집 또는 양식 편집 옵션을 사용합니다. 해당 깊이 배치 된 옵션을 사용하여 사용자 지정 옵션을 delGridRow
으로 지정해야합니다. 무료 jqGrid에는 jqGrid 옵션이 있습니다.이 메소드를 사용하면 메소드 간접 호출에 공통 옵션을 지정할 수 있습니다. inlineEditing
, formEditing
, formDeleting
, formViewing
, searching
을 사용하여 모든 방법에 사용 된 기본값 인 옵션을 지정할 수 있습니다. 따라서 당신은 당신이 단지 formatter: "actions"
의 formatoptions
속성을 제거 할 수 있습니다 그 후
inlineEditing: {
keys: true
},
formDeleting: {
serializeDelData: function (postData) {
return JSON.stringify(postData);
},
ajaxDelOptions: {
contentType: "application/json"
}
}
있는 jqGrid 옵션을 사용할 수 있습니다.navGrid
을 사용하는 경우에도 삭제하는 동안 동일한 옵션이 사용됩니다.
the wiki article에서 옵션을 지정하는 새로운 방법에 대해 자세히 읽을 수 있습니다.
그런데 인라인 편집에 문제가있을 수 있습니다. 인라인 편집 중에 JSON 인코딩을 사용하려면 ajaxRowOptions
옵션과 serializeRowData
콜백 jqGrid를 사용해야합니다. 무료 jqGrid는 동일한 옵션을 지원하며 내부에 ajaxSaveOptions
및 serializeSaveData
을 추가로 사용할 수 있습니다.
사용하는 jqGrid의 버전 및 사용 가능한 포크 ([free jqGrid] (https://github.com/free-jqgrid/jqGrid), 상용 [Guriddo jqGrid JS] (http://guriddo.net/?page_id=103334) 또는 버전 <= 4.7의 이전 jqGrid). – Oleg
@Oleg 메신저는 이전 jqgrid 버전 4.4.4를 사용합니다. 그것의 무료 버전 (Trirand jqGrid) – user2838738