Yii2基于Ajax自動(dòng)獲取表單數(shù)據(jù)的方法

字號(hào):


    本文實(shí)例講述了Yii2基于Ajax自動(dòng)獲取表單數(shù)據(jù)的方法。分享給大家供大家參考,具體如下:
    這里有兩張表,表結(jié)構(gòu)如下,locations表存放的省份和郵編等信息,兩張表的model和curd均使用gii生成
    yii2advanced.customers表
    customer_id:int(11)
    customer_name:varchar(100)
    zip_code:varchar(20)
    city:varchar(100)
    province:varchar(100)
    yii2advanced.locations表
    location_id:int(11)
    zip_code:varchar(20)
    city:varchar(100)
    province:varchar(100)
    這里要通過在customer選擇zip_code之后自動(dòng)在表單中填充這個(gè)郵編對(duì)應(yīng)的城市和省份信息
    實(shí)現(xiàn)方法
    首先需要在Locations控制器里面添加一個(gè)方法,他可以通過get過來的zip_id獲取對(duì)應(yīng)的location信息
    public function actionGetCityProvince($zipId)
    {
      $location = Locations::findOne($zipId);
      echo Json::encode($location);
    }
    然后通過JS監(jiān)聽select,當(dāng)select改變時(shí),使用jQuery的get方法獲取對(duì)應(yīng)的信息,并使用jQuery的attr方法設(shè)置city和province的value即可
    JS代碼,位于customer的form視圖
    #zipCode 是select的id
    <?php
    $script = <<<JS
    jQuery('#zipCode').change(function(){
      var zipId = $(this).val();
      jQuery.get('index.php?r=locations/get-city-province',{zipId:zipId},function(data){
        var data = jQuery.parseJSON(data);
        jQuery("#customers-city").attr("value",data.city);
        jQuery("#customers-province").attr("value",data.province);
      });
    });
    JS;
    $this->registerJs($script);
    ?>
    希望本文所述對(duì)大家基于Yii框架的PHP程序設(shè)計(jì)有所幫助。