2011-10-13 2 views
0

저는 PHP에 매우 익숙하며 자바 스크립트에 익숙하지만 현재 막대한 jqGrid 플러그인을 사용하는 방법을 배우고 있습니다. jqGrid가 그리드 데이터를 직렬화하는 방법과 PHP가이 데이터를 분석하는 방법을 이해하려고합니다. 현재 MySQL에 연결하고 있지는 않지만 직렬화 된 jqGrid 데이터를 "가짜"결과로 표시하려고합니다.jqGrid serializegriddata PHP 구문 분석

<?php 
    $jason = $_POST['postData']; 
    $page = $jason->{'page'}; 
    echo '<rows>'; 
     echo '<page>1</page>'; 
     echo '<total>1</total>'; 
     echo '<records>1</records'; 
     echo '<row id="1">'; 
     echo '<cell>'.$page.'</cell>'; 
     echo '</row>'; 
    echo '</rows>'; 
?> 

: 나는 다음 코드를 가지고 내 'grid.php'파일에이 정보를 보내

<script type='text/javascript'> 
    $(function(){ 
     $('#list').jgGrid({ 
     url:'grid.php', 
     mtype:'POST', 
     colNames:['json'], 
     colModel:[{name:'j',index:'j',searchoptions:{sopt:['eq']},search:true}], 
     pager:'#pager', 
     rowNum:10, 
     viewrecords:true, 
     gridview:true, 
     serializeGridData:function(postData){ 
      return postData; 
     } 
     }) 
    }); 
</script> 

: 내 PHP 파일의 머리에 JS에 대한 다음과 같은 코드를 JS에서 serializegriddata 옵션을 제거하면 모든 것이 잘 작동합니다. 또한 기본 $ _POST [ 'page'], $ _POST [ 'rows'], $ _POST [ 'sidx'], $ _POST [ 'sord']를 추가합니다. 다시 PHP로). serializegriddata를 추가하면 문제가 발생합니다.

나는 클라이언트 측에서 postData를 사용하는 방법에 대한 예제를 찾고 있는데 (serializegriddata에 추가해야하는 다른 함수이거나 postData를 반환 할 수 있습니까?) 그리고 PHP에서이를 올바르게 파싱하는 방법 데이터를 $ _POST하는 방법과이 데이터를 구문 분석하고 사용하는 방법). 나는 이것이 아마도 매우 간단한 해결책이라는 것을 알고 있지만, 나는 클라이언트에 관해서 이야기하고 서버 측에 관해서는 아무것도 말하지 않는다. 미리 감사드립니다.

답변

1

좋아요, 조금 느리지 만 부분적으로 제 질문에 대답했습니다. multiple jsGrid 문서는 multipleSearch : true를 설정하면 전체 postData가 JSON 문자열로 파싱 된 것처럼 읽혀집니다. 모든 변수를 postData JSON 변수로 구문 분석 한 다음 PHP로 전달해야한다고 생각했습니다. 솔루션이 올바르게 구현되기까지 약간의 노력이 있었지만 누락 된 점은 multipleSearch에서 true라는 사실입니다.이 함수는 AJAX 호출에 '필터'변수 만 추가합니다.

$filters = $_POST['filters']; 
$json = json_decode($filters,true); 

및 $ 필터의 결과입니다 : 다음과 같이 필터 변수는 구문 분석

{"groupOp":"AND","rules":[{"field":"Customer","op":"eq","data":"eosp"}]} 

이것을 multipleSearch 반대입니다 : 일단

$sField = $_POST['sField']; 
$sValue = $_POST['sValue']; 
$sOper = $_Post['sOper']; 

: 허위 옵션 이걸 가지고, 내 검색 매개 변수의 모든 인스턴스를 반복 할 수 있었고 $ variable 변수를 만들 수있었습니다. 거의 저에게 큰 문제가되었던 한 가지 사실은 (아래의 링크)를 올바르게 만들 수 있다는 것을 알 수 있었던 예가 mysql_query가 단 1 번 밖에 없다는 것입니다.

http://blog.brzezinka.eu/webmaster-tips/jquery/how-to-enable-the-search-functionality-in-jqgrid

나는이 (똑바로 거의 2 일 동안 나를 미치게 운전) 미래에 다른 사람을 도울 수 있기를 바랍니다.

0

는 서버 측에서 전송해야하는 XML 구조는 다음과 같습니다

<?xml version ="1.0" encoding="utf-8"?> 
<rows> 
    <page> </page> 
    <total> </total> 
    <records> </records> 
    <row id = 'my_rowid'> 
     <cell> cellcontent </cell> 
     <cell> <![CDATA[<font color='red'>cell</font> content]]> </cell> 
     … 
    </row> 
    <row id = 'my_rowid'> 
     <cell> cellcontent </cell> 
     <cell> <![CDATA[<font color='red'>cell</font> content]]> </cell> 
     … 
    </row> 
     … 
</rows> 

는 서버 측 here에서 PHP를 사용하여 전체 샘플을 찾을 수 있습니다.

이며 설명서는 here입니다.

+0

나는 그 예를 이미 보았습니다. $ _GET을 사용하여 클라이언트 측에서 정보를 검색합니다.필자의 예제는 매우 간단했지만 여러 검색 기준을 사용해야하므로 클라이언트 측에서 데이터를 직렬화해야합니다. 단일 검색의 경우 $ _GET [ 'sField'], $ _GET [ 'sValue'] 및 $ _GET [ 'sOper']를 사용할 수 있습니다. 그러나 여러 검색 기준의 경우 postData를 사용해야하고 PHP에서이 JSON 문자열을 파싱해야합니다. 어떻게 여러 검색에 대한 각 기준이 'postData'에 포함되어 있는지 확인한 다음 PHP에서 JSON 문자열 'postData'를 구문 분석하는 방법 – Michael