最初はデータベースの設計です。分類テーブルは、cate と呼ばれます。
私が行っているのは、分類されたデータの第 2 レベルのリンクです。データに必要なフィールドは、id、name (中国名)、pid (親 ID) です。
の設定です。親 ID: データに前のレベルがない場合、親 ID は 0 です。上位レベルがある場合、親 ID は上位レベルの ID になります。
データベースにコンテンツが追加されたら、セカンダリ リンケージを実装するコードの作成を開始できます。
まず、バックグラウンド PHP で pid 0 のすべてのデータを取得し、$cate に保存し、次に foreach ループを使用して最初のレイヤーの 221f08282418e2996498697df914ce4e に出力します。
HTML コード:
<select name="type" size="1" id="type"> <option>请选择类型</option> <foreach name='cate' item='v'> <option value="{$v['ca_id']}">{$v.ca_name}</option> </foreach> </select> 标签: <select name="lable" size="1" id="lables"> </select>
Ajax コード:
$('#type').click(function(){ $(this).change(function(){ var objectModel = {}; var value = $(this).val(); var type = $(this).attr('id'); objectModel[type] =value; $.ajax({ cache:false, type:"POST", url:site.web+"lable", dataType:"json", data:objectModel, timeout:30000, error:function(){ alert(site.web+"lable"); }, success:function(data){ $("#lables").empty(); var count = data.length; var i = 0; var b=""; for(i=0;i<count;i++){ b+="<option value='"+data[i].ca_id+"'>"+data[i].ca_name+"</option>"; } $("#lables").append(b); } }); }); } );
Ajax コードは、最初のレイヤーのタイプが変更された後にトリガーされます。 1.url: バックグラウンドで受信する Ajax のアドレス。
2.データ: 送信 バックグラウンドへのデータは通常、json を使用して転送されます。ここで転送されるのは、選択したクラスの ID 値です。 3.type: transfer メソッド。get メソッドと post メソッドがあります。私は通常、get よりも多くのデータを送信でき、より安全な post を使用します。 4.error: ajax 実行失敗メソッド 5. 成功。 : Ajax の実行メソッド。コールバック関数です。ここで成功を実行するときは、まず empty() を使用して 2 番目のドロップダウン メニューの内容をクリアし、次にバックグラウンドから取得したデータを出力します。 以下は、Thinkphp が ajax データを受信して処理するページです//后台ajax验证 $result = array(); $cate =$_POST['type']; $result = M('cate')->where(array('ca_pid'=> $cate))->field('ca_id,ca_name')->select(); $this->ajaxReturn($result,"JSON");Thinkphp の I() メソッドは、実際には $_POST[] と見なすことができ、ajax によって渡された第 1 レベルの選択されたコンテンツの ID を取得します。字幕クラスを取得し、ajaxReturn()でajaxに戻ります。戻りデータはjson形式で設定されているので、ajaxはjson形式でデータを受け取りますネイティブphp:
//搜索结果为$result ..... echo json_encode($result);の戻りデータメソッドはこれで完了です。 2 レベルのリンク ドロップダウン メニュー 実装では、URL が正しい必要があり、バックグラウンドで受信したときに戻り値がなければならないことに注意してください。そうでない場合、ajax は成功メソッドを実行しません。
ThinkPHP の使用体験をさらに共有する - ThinkPHP + Ajax による 2 レベルのリンク ドロップダウン メニューの実装については、PHP 中国語 Web サイトの関連記事にご注目ください。