使用php laravel jQuser ajax 实现三级联动 省市区
后台 laravel 创建控制器数据返回视图
<?php
namespace App\Http\Controllers;
use App\Models\SelectModel;
use Illuminate\Http\Request;
class SelectController extends Controller
{
public function province(){
$res = SelectModel::where(['parent_id'=>1])->get();
if (!$res){
return ['code'=>1,'mssage'=>"查询失败",'data'=>''];
}
return view("/day925/select",['data'=>$res]);
}
public function city(Request $request){
$id = $request->input('id');
$res = SelectModel::where(['parent_id'=>$id])->get();
if (!$res){
return ['code'=>1,'mssage'=>"查询失败",'data'=>''];
}
return $result =(['code'=>0,'mssage'=>"查询成功",'data'=>$res]);
}
public function area(Request $request){
$id = $request->input('id');
$res = SelectModel::where(['parent_id'=>$id])->get();
if (!$res){
return ['code'=>1,'mssage'=>"查询失败",'data'=>''];
}
return $result=(['code'=>0,'mssage'=>"查询成功",'data'=>$res]);
}
}
模型
class SelectModel extends Model
{
//
protected $table = "china_area";
}
路由
//三级联动
Route::get('province','SelectController@province');
Route::get('city','SelectController@city');
Route::get('area','SelectController@area');
视图层
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>三级联动laravel</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
</head>
<body>
<select name="prov" class="province">
<option value="">--请选择省份--</option>
@foreach($data as $k=>$v )
<option value="{{$v->id}}">{{$v->name}}</option>
@endforeach
</select>
<select name="prov" class="city">
<option value="">--请选择城市--</option>
</select>
<select name="prov" class="area">
<option value="">--请选择县区--</option>
</select>
</body>
</html>
<script type="application/javascript" >
$('.province').change(function (){
//请求参数
var province = $(this).val();
//
$.ajax({
//请求方式
type : "get",
//请求的媒体类型
contentType: "application/json;charset=UTF-8",
//请求地址
url : "city",
//数据,json字符串
data : {"id":province},
//请求成功
dataType:"json",
success : function(result) {
if (result.code==0){
var citys =result.data;
var optionstr = "<option value='0'>--请选择城市--</option>"
for(var i=0;i<citys.length;i++){
var city = citys[i];
optionstr += "<option value='" + city.id + "'>" + city.name + "</option>";
}
$('.city').html(optionstr);
}else {
alert(result.message);
}
},
});
});
$('.city').change(function (){
var city = $(this).val();
$.ajax({
//请求方式
type : "get",
//请求的媒体类型
contentType: "application/json;charset=UTF-8",
//请求地址
url : "area",
//数据,json字符串
data :{"id":city},
//请求成功
dataType:"json",
success : function(result) {
if (result.code==0){
var areas =result.data;
var options = "<option value='0'>--请选择区县--</option>"
for(var i=0;i<areas.length;i++){
var area = areas[i];
options += "<option value='" + area.id + "'>" + area.name + "</option>";
}
$('.area').html(options);
}else {
alert(result.message);
}
},
//请求失败,包含具体的错误信息
error : function(e){
console.log(e.status);
console.log(e.responseText);
}
});
});
</script>
jquser ajax使用 手册 https://www.jquery123.com/jQuery.get/

浙公网安备 33010602011771号