2011-10-13 20 views
0

私は非常にPHPに新しいので、私はかなりjavascriptに精通していますが、今大規模な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

私は少し遅いですが、部分的に私自身の質問に答えました。 multipleSearch:trueを設定した場合、すべてのjqGridドキュメントは、postData全体がJSON文字列として解析されたかのように読み込まれます。私は、すべての変数をpostData JSON変数に解析して、これをPHPに渡す必要があると考えました。このソリューションは適切に実装するには少し時間がかかりましたが、私が見逃していたことはmultipleSearchでtrueです。これはAJAX呼び出しに「フィルタ」変数を追加します。

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

をし、$フィルタの結果は次のとおりです:このフィルタ変数は、以下のように解析されmultipleSearchとは対照的に、

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

これは、次のとおりです。のfalseオプション:一度

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

私はこれを持って、私は私の検索パラメータのすべてのインスタンスをループし、私の$変数を作成することができました変数。ほとんど私にとって大きな問題になったことは、私が正しく構築することができた古い例(以下のリンク)は、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を使用してクライアント側から情報を取得します。私の例は非常にシンプルでしたが、私は複数の検索基準を使用する必要があるため、クライアント側からデータをシリアル化する必要があります。 1回の検索では、$ _GET ['sField']、$ _GET ['sValue']、$ _GET ['sOper']を使用できます。しかし、複数の検索基準については、postDataを使用してこのJSON文字列をPHPで解析する必要があります。どのように複数の検索のための各基準が 'postData'に含まれていることを確認したら、PHPでJSON文字列 'postData'を解析するのですか? – Michael