2012-11-02 7 views
3

나는 내가 가진 느릅 나무 aftersubmit는 다음과 같이 함수에서 그것을 좀하고 싶습니다 insertStatus 내가 라는 JSON 값을 반환하고 있습니다 :있는 jqGrid afterSubmit

var addOptions = 

     { 
      closeOnEscape: true, 
      width:500, 
      url: 'addMember', 
      savekey: [true, 13], 
      afterSubmit : function(response, postdata) 
      { 
       alert(response.insertStatus); 
      }, 
      resize : false, 
      closeAfterAdd: true 
     }; 

을하지만 난 그냥 메시지를 표시합니다 "undefined".

이 값은 새 레코드 삽입이 데이터베이스에 성공적으로 저장되었는지 여부를 알려주기 때문에 InsertStatus 값을 JSON으로 가져 오려고합니다. 어쩌면 여기에서 JSON 값을 얻을 수 없다면 다른 방법을 따라야할까요?

다른 작업에 errorText를 사용하고 JSON 값을 반환하는 대신 사용자 정의 오류 메시지와 함께 HTTP 오류 상태를 반환했습니다. 최선의 방법이 될 것입니까? 두 번째 aproach가 더 나을지라도 첫 번째 답변에 대해 알고 싶습니다. 당신의 도움을 주셔서 감사합니다.

+0

jqgrid 제출 후 json을 얻고 싶습니까? – viyancs

+0

안녕하세요 viyancs, 네, 그게 내가하려는거야. 당신의 도움을 주셔서 감사합니다. –

+0

새로운 행이 성공한 후 서버로부터받은 응답이 데이터베이스에 저장되었는지,'response.insertStatus'를 다루는 객체를 호출하기 때문에 응답이 객체인지 확인하십시오. 단지'alert (response);' 경고 (postdata)'및 귀하의 질문을 업데이트 응답 결과를 포함 ... 나는이 많은 사람들이 대답을 생각합니다 .. :) – viyancs

답변

6

jqGrid의 양식 편집 모듈은 success 콜백 (the source code 참조) 대신 jQuery.ajax의 콜백 complete 콜백을 사용합니다. 따라서 afterSubmit 콜백 (response 매개 변수)의 첫 번째 매개 변수는 jqGrid 설명서에서 jqXHR으로 명명 될 객체입니다. 확장자는 XMLHttpRequest입니다. 따라서 responseText 속성을 사용하여 서버의 일반 응답에 액세스해야합니다. 서버가 insertStatus으로 JSON 문자열로 인코딩 된 객체를 반환하면 먼저 JSON 문자열 response.responseText을 구문 분석하고 insertStatus 속성을 가져와야합니다. afterSubmit의 해당 코드는 다음과 같을 수 있습니다.

afterSubmit: function (response, postdata) { 
    var res = $.parseJSON(response.responseText); 
    if (res && res.insertStatus) { 
     alert(res.insertStatus); 
    } 
    // you should don't forget to return 
    //  return [true, ""]; 
    // in case of successful editing and return 
    //  return [true, "", newId]; 
    // with the Id of new row generated from the server 
    // if you would use reloadAfterSubmit: false 
    // option of editGridRow 
} 
+0

Thank You Oleg! 그게 바로 제가 찾고 있던 것입니다. 당신은 생명의 은인입니다! 나는 다만 다른 질문이있다. jqGrid에서 서버 측 유효성 검사를위한 가장 좋은 방법은 무엇입니까? 1.이 경우처럼 JSON 객체를 반환하고 값에 따라 오류 또는 성공 메시지를 렌더링하거나 2. HTTP 오류 상태를 반환하고 errorTextFormat 이벤트를 사용합니까? 다시 감사합니다! –

+1

@ 존 스미스 : 천만에요! HTTP 오류 상태를 반환하고'errorTextFormat'을 사용하는 것이 가장 좋습니다. 서버 응답의 HTTP 오류 상태는 처리되지 않은 예외가 발생하거나 시간이 초과되거나 서버가 다운 된 경우에도 발생할 수 있다는 점을 고려해야합니다. 그래서 좋은 'errorTextFormat' 구현은 모든 생산적인 프로젝트에 권장됩니다. – Oleg

+0

사용자 이름이 이미 있기 때문에 레코드를 저장할 수 없을 때 어떤 HTTP 오류 상태가 반환됩니까? (예를 들어) 4xx와 같은 것? 또는 3xx? 고맙습니다. –