本文實例講述了Yii2基于Ajax自動獲取表單數(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之后自動在表單中填充這個郵編對應(yīng)的城市和省份信息
實現(xiàn)方法
首先需要在Locations控制器里面添加一個方法,他可以通過get過來的zip_id獲取對應(yīng)的location信息
public function actionGetCityProvince($zipId)
{
$location = Locations::findOne($zipId);
echo Json::encode($location);
}
然后通過JS監(jiān)聽select,當select改變時,使用jQuery的get方法獲取對應(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);
?>
希望本文所述對大家基于Yii框架的PHP程序設(shè)計有所幫助。