2010-04-20 2 views
22

을있는 jqGrid 설정 가능) :은 jQuery를 수행 요청의 콘텐츠 형식 내가 <a href="http://www.trirand.com/blog/?page_id=6" rel="noreferrer">jqGrid</a>의 최신 버전을 사용하고

application/x-www-form-urlencoded; charset=UTF-8 

와 나는 그것이 싶습니다 :

그리드) 컨트롤러 액션에 (서버에 요청을 전송

, 컨텐츠 형은 항상

,292,742,

하지만 콘텐츠 유형을 설정할 방법이 없습니다. 예를 들어 $ .ajax 호출 에서처럼 contentType 옵션이 없습니다.

분명히하기 위해 jQuery 서버 요청에서 content-type을 설정하는 방법을 묻지는 않지만 jqGrid를 사용하는 것이 명확합니다.이 방법은 분명한 옵션을 제공하지 않습니다.

감사합니다, Nigel.

업데이트 : Oleg의 응답으로 해결되었습니다.

당신이 할 grid.base.js 그리드를 채우는 $.ajax 호출 포함의 코드에서 찾을 수있는 방법
jQuery("#ContactGridList").jqGrid({ 
     url: '/ContactSelect/GridData/', 
     datatype: 'json', 
     ajaxGridOptions: { contentType: 'application/json; charset=utf-8' }, 
     mtype: 'POST', 
     ... 

답변

26

은 다음과 같습니다 :

$.ajax($.extend({ 
    url: ts.p.url, 
    type: ts.p.mtype, 
    dataType: dt, 
    data: $.isFunction(ts.p.serializeGridData) ? 
      ts.p.serializeGridData.call(ts, ts.p.postData) : ts.p.postData, 
    complete: function (req, st) { 
     ... 
    } 
    ... 
}, $.jgrid.ajaxOptions, ts.p.ajaxGridOptions)); 
여기

는 그리드에 대한 옵션 설정입니다

의 jqGrid 옵션을 사용하면 $.ajax 요청 매개 변수를 설정하거나 무시할 수 있습니다. 나는 내 서버에만 JSON 요청을 사용하기 때문에, 나는 grid.inlinedit.js 행 편집에 사용되는

$.extend($.jgrid.defaults, { 
    datatype: 'json', 
    {ajaxGridOptions: { contentType: "application/json" }, 
    {ajaxRowOptions: { contentType: "application/json", type: "PUT" }, 
    ... 
}); 

ajaxRowOptions 같은 contentType의 일반 설정을 설정합니다. 양식 편집을 위해 내가 전역 설정으로도 설정 다른 매개 변수를가 :

내 서버 (WFC 주로 개발 및 ASP.NET MVC의 나머지)를 RESTfull 서비스가 얼마나 당신이 볼 수
$.extend($.jgrid.edit, { 
    ajaxEditOptions: { contentType: "application/json" }, 
    ... 
}); 

$.extend($.jgrid.del, { 
    ajaxDelOptions: { contentType: "application/json" }, 
    mtype: "DELETE", 
    ... 
}); 

. $.jgrid.edit은 "추가"및 "수정"항목 모두에 대한 설정이므로 을 "편집"으로 만 변경할 수 없으므로 navGrid()의 매개 변수에서이 작업을 수행합니다.

설정하는 것도 흥미로운 마지막 아약스 매개 변수는 ajaxSelectOptions입니다. ajaxGridOptions과 같은 방식으로 설정할 수 있습니다. ajaxSelectOptions의 매개 변수는 editoptions 또는 searchoptions 내부에 dataUrl 매개 변수를 사용하는 경우 유용합니다. 예를 들어 dataUrl 안에 colModel을 입력하면 edittype: 'select' 유형의 열을 정의 할 수 있습니다. 선택 옵션의 가능한 값은 인라인 또는 양식 편집 또는 검색 대화 상자 내부에서 서버에서로드됩니다. 이러한 데이터로드에는 ajax가 사용되므로 해당하는 ajaxSelectOptions 옵션이 있습니다.

감사합니다.

+0

감사합니다. 올렉!그것은 그것을했다. 예제 코드를 질문에 추가했습니다. – Nigel

+0

매우 이상합니다! 나는 또한 jqGrid 3.6.4를 사용한다. 내가 jQuery 1.4.2를 사용하기 때문에 나는 http://github.com/tonytomov/jqGrid에서 버전을 사용해야한다. 그러나 아약스 기능은 3.6 (3.6.0)부터 시작한다. jqGrid 버전에서 ajaxGridOptions를 검색하여 확인할 수 있습니다. http://github.com/tonytomov/jqGrid에서 jqGrid의 마지막 압축되지 않은 버전을로드하고이 js- 파일 (예 : grid.loader.js)을 사용하도록 코드를 수정하고 grid.base.js 내에 중단 점을 설정하는 것이 좋습니다. (.ajax 검색) 및 jQuery.ajax 내부 (압축되지 않은 jquery-1.4.2.js). $ .jgrid.defaults를 설정하여 하나의 테스트를 수행 할 수도 있습니다. – Oleg

+0

축하합니다 !!! 좋은 문제는 해결 된 문제입니다! – Oleg

관련 문제