php原生态三级联动_js,php,html实现地区三级联动

window.onload = getProvince;

function createRequest() {//Ajax于PHP交互需要对象

try {

request = new

XMLHttpRequest();//创建一个新的请求对象;

} catch (tryMS) {

try {

request = new ActiveXObject("Msxml2.XMLHTTP");

} catch (otherMS)

{

try

{

request = new

ActiveXObject("Microsoft.XMLHTTP");

}

catch (failed) {

request = null;

}

}

}

return request;

}

function sech(id) {//省市改变时触发,select的onchange事件

var aa =

document.getElementByIdx_x_x_x(id);

if(id=="sheng"){

var value=parseInt(aa.value)+0;//字符串转化成整数

getCity(value);//这里aa.value为省的id

}

if(id=="shi")

{

var

value=parseInt(aa.value)-parseInt(aa.value)0;//这里的value课根据情况修改,我是省市县在一张表里面,所以此处进行了一下处理

getCounty(value);//这里aa.value为市的id

}

}

function getProvince() {//获取所有省

request = createRequest();

if (request == null) {

alert("Unable to create

request");

return;

}

var url=

"getDetails.php?ID=0";//ID=0时传递至PHP时让其获取所有省

request.open("GET", url, true);

request.onreadystatechange =

displayProvince; //设置回调函数

request.send(null);  //发送请求

}

function getCity(id){//获取省对应的市

request = createRequest();

if (request == null) {

alert("Unable to create

request");

return;

}

var url=

"getDetails.php?qq=2&ID="+id;

request.open("GET", url, true);

request.onreadystatechange =

displayCity;

request.send(null);

}

function getCounty(id){//获取市对应的区

request = createRequest();

if (request == null) {

alert("Unable to create

request");

return;

}

var url= "getDetails.php?kk=3&ID=" +

id;

request.open("GET", url, true);

request.onreadystatechange =

displayCounty;

request.send(null);

}

function displayProvince() {//将获取的数据动态增加至select

if (request.readyState == 4) {

if (request.status ==

200) {//200和4是请求操作,不必

var a=new Array;

var b=request.responseText;//将PHP返回的数据赋值给b

var

obj=document.getElementByIdx_x_x_x("sheng");

a=b.split(",");//通过","将这一数据保存在数组a中

document.getElementByIdx_x_x_x("sheng").length=1;

//脚本之家下面这句不完整

for(i=0;i

var a1=a[i].split(".");

obj.options.add(new

Option(a1[1],a1[0]));}

}

}

}

function displayCity() {//将获取的数据动态增加至select

if (request.readyState == 4) {

if (request.status ==

200) {

var a=new Array;

var b=request.responseText;

var

obj=document.getElementByIdx_x_x_x("shi");

a=b.split(",");

document.getElementByIdx_x_x_x("shi").length=1;//重新选择

document.getElementByIdx_x_x_x("xian").length=1;//重新选择

if(document.getElementByIdx_x_x_x("sheng").value!="province"){

for(i=0;i

var a1=a[i].split(".");

obj.options.add(new Option(a1[1],a1[0]));

}

}

}

}

}

function displayCounty() {//将获取的数据增加至select

if (request.readyState == 4) {

if (request.status ==

200) {

var a=new Array;

var

obj=document.getElementByIdx_x_x_x('xian');

var b=request.responseText;

a=b.split(",");

document.getElementByIdx_x_x_x("xian").length=1;

if(document.getElementByIdx_x_x_x("sheng").value!="province"&&document.getElementByIdx_x_x_x("shi").value!="city"){

for(i=0;i &lta.length-1;i++){

var a1=a[i].split(".");

obj.options.add(new

Option(a1[1],a1[0]));//a1[1]是名字,a1[0]是地区数字代号

}

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现多选省市县三级联动,可以采用以下步骤: 1. 建立数据库表格,包含省份、城市、区县等信息,每个表格至少包含三个字段:ID、名称和上级ID。 2. 在 HTML 页面中,使用多选框(checkbox)实现省份、城市、区县的选择。对于每个多选框,需要设置一个 value 值,用于标识该项的唯一性。 3. 使用 Ajax 技术,实现省份、城市、区县之间的联动。当选择省份时,通过 Ajax 请求获取该省份下的城市列表,然后动态生成城市多选框;当选择城市时,再次通过 Ajax 请求获取该城市下的区县列表,然后动态生成区县多选框。 4. 在 PHP 后端代码中,接收前端页面传递的省份、城市、区县的 value 值,然后根据这些值查询数据库,获取对应的名称,最后将名称返回给前端页面显示。 下面是一个简单的 PHP 代码示例,用于实现多选省市县三级联动: ``` // 接收前端页面传递的省份、城市、区县的 value 值 $provinceIds = $_POST['provinceIds']; $cityIds = $_POST['cityIds']; $countyIds = $_POST['countyIds']; // 查询数据库,获取对应的名称 $provinces = getNamesByIds('provinces', $provinceIds); $cities = getNamesByIds('cities', $cityIds); $counties = getNamesByIds('counties', $countyIds); // 将名称返回给前端页面显示 echo json_encode(array( 'provinces' => $provinces, 'cities' => $cities, 'counties' => $counties )); // 查询数据库,根据 ID 获取对应的名称 function getNamesByIds($table, $ids) { $names = array(); if (!empty($ids)) { $ids = implode(',', $ids); $sql = "SELECT name FROM $table WHERE id IN ($ids)"; // 执行 SQL 查询,获取名称列表 // ... } return $names; } ``` 需要注意的是,上面的代码仅为示例,具体实现方式需要根据实际情况进行调整。同时,为了提高用户体验,还可以在前端页面中添加一些交互效果,例如:在选择省份时,自动展开城市选项;在选择城市时,自动展开区县选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值