ホームページ  >  記事  >  php教程  >  ThinkPHP の使用体験の共有 - ThinkPHP + Ajax で 2 段階の連携を実現 ドロップダウン メニュー

ThinkPHP の使用体験の共有 - ThinkPHP + Ajax で 2 段階の連携を実現 ドロップダウン メニュー

高洛峰
高洛峰オリジナル
2016-12-30 09:52:241475ブラウズ

最初はデータベースの設計です。分類テーブルは、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=&#39;cate&#39; item=&#39;v&#39;>
         <option value="{$v[&#39;ca_id&#39;]}">{$v.ca_name}</option>
     </foreach>
 </select>
 标签:
 <select name="lable" size="1" id="lables">
 </select>

Ajax コード:

  $(&#39;#type&#39;).click(function(){
            $(this).change(function(){
                var objectModel = {};
                var   value = $(this).val();
               var   type = $(this).attr(&#39;id&#39;);
                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=&#39;"+data[i].ca_id+"&#39;>"+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[&#39;type&#39;];
  $result = M(&#39;cate&#39;)->where(array(&#39;ca_pid&#39;=> $cate))->field(&#39;ca_id,ca_name&#39;)->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 サイトの関連記事にご注目ください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。