2016-12-30 3 views
0

저는 Oleg의 무료 jqGrid를 사용하고 있습니다. 내 양식 편집 후, 나는 PHP에서 내가 같은 좋은 배열을 얻을 수 있도록, 내 POST 데이터를 포장하는 것을 시도하고있다 :무료 jqGrid : beforeSubmit 함수에서 POST 데이터를 래핑하십시오.

조작하고 조작하는 데이터가 잘 분리되어
Array(
oper => edit, 
data => Array(
    foo => '123', 
    bar => 'xyz', 
    ... 
    ) 
) 

.

  beforeSubmit: function(postdata, formid) { 
        var d = {}; 
        d.data = postdata; 
        console.log(d); 
        postdata = d; 
        return([true, '']); 
      } 

Unfortuntely이 작동하지 않습니다 :

내 직관적 인 접근 방식은 같은 것이 있었을 것이다 console.log (d)는 원하는 결과를 멋지게 출력하지만, postdata는 변경되지 않습니다. 나는 자바 스크립트에 정통하지 않지만, 글로벌 포스트 데이터가 함수 내에서 변경되지 않았다고 생각합니다. 그리고 불행하게도이 함수는 리턴 할 수 없습니다.

이 문제를 해결하는 방법에 대한 제안. 사소한 문제는 아니지만 운영자와 데이터간에 명확한 구분을 유지하기 위해 더 체계적으로 보이고 유지 관리가 가능할 것이라고 생각했습니다.

감사합니다.

답변

1

콜백 beforeSubmit은 최선의 선택이 아닙니다. 대신 serializeEditData 콜백을 사용하는 것이 좋습니다.이 콜백은 양식 편집 옵션 (formEditing jqGrid 매개 변수 내부) 또는 jqGrid 매개 변수로 정의 할 수 있습니다. 콜백은 유일한 매개 변수로 postdata을 가져오고 서버로 보내야하는 JSON 문자열의 수정 된 객체를 반환해야합니다. 코드는 다음과 같을 수 있습니다.

serializeEditData: function (postdata) { 
    var d = { 
      oper: postdata.oper, 
      data: $.extend(true, {}, postdata) // make copy 
     }; 
    delete d.data.oper; // remove unneeded oper property 
    return d; 
} 
+0

youdaman !! 다시 한번 고마워, 친구! – Roadowl

+0

@Roadowl : 천만에! – Oleg