Ajax实现城市二级联动(三)

发布时间 - 2026-01-10 23:09:46    点击率:

本文实例为大家分享了Ajax实现城市二级联动的具体代码,供大家参考,具体内容如下

这是Ajax实现城市二级联动系列文章第三篇,把之前2篇整合在一起

1、html

<select id="province">
 <option>请选择</option>
 </select>
 <select id="city">
 <option>请选择</option>
 </select>

2、javascript

//创建获取ajax核心对象的函数
  function getXhr(){
   var xhr = null;
   if(window.XMLHttpRequest){
    xhr = new XMLHttpRequest();
   }else{
    xhr = new ActiveXObject("Microsoft.XMLHttp");
   }
   return xhr;
  }
  var xhr = getXhr();
  // 第一次执行Ajax异步请求 - 省份
  window.onload = function(){
   xhr.open("get","finaly.php?state=1");
   xhr.send(null);
   xhr.onreadystatechange = function(){
   if(xhr.readyState==4&&xhr.status==200){
     var data = xhr.responseText;
     // 将字符串转换为数组
     var provinces = data.split(",");
     // 遍历数组
     for(var i=0;i<provinces.length;i++){
      // 创建option元素添加到id为province元素上
      var option = document.createElement("option");
      var text = document.createTextNode(provinces[i]);
      option.appendChild(text);
      var province = document.getElementById("province");
      province.appendChild(option);
     }
    } 
   }
  };
  // 第二次执行Ajax异步请求 - 城市
  var province=document.getElementById("province");
  province.onchange = function(){
   var city = document.getElementById("city");
   var opts = city.getElementsByTagName("option");
   for(var z=opts.length-1;z>0;z--){
    city.removeChild(opts[z]);
   }
   if(province.value != "请选择"){
    xhr.open("post","finaly.php");
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xhr.send("state=2&province="+province.value);
    xhr.onreadystatechange = function(){
     if(xhr.readyState==4&&xhr.status==200){
      var data = xhr.responseText;
      var cities = data.split(",");
      for(var i=0;i<cities.length;i++){
       var option = document.createElement("option");
       var text = document.createTextNode(cities[i]);
       option.appendChild(text);
       city.appendChild(option);
      }
     }
    }
   }
  };

3、finaly.php

<?php
 // 接收客户端发送的请求数据 - state
 $state = $_REQUEST['state'];
 // 判断$state的值
 if($state == 1){// 获取省份
  echo '山东省,辽宁省,吉林省';
 }else{// 获取城市
  $province = $_POST['province'];
  switch ($province){
   case '山东省':
    echo '青岛市,济南市,威海市,日照市,德州市';
    break;
   case '辽宁省':
    echo '沈阳市,大连市,铁岭市,丹东市,锦州市';
    break;
   case '吉林省':
    echo '长春市,松原市,吉林市,通化市,四平市';
    break;
  }
 }
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Ajax  # 二级联动  # Ajax结合php实现二级联动  # Spring MVC中Ajax实现二级联动的简单实例  # jQuery+JSON实现AJAX二级联动实例分析  # AJAX解析XML实例之下拉框省、市二级联动  # ajax读取数据库内容实现二级联动下拉选择菜单示例  # Ajax二级联动菜单实现原理及代码  # asp.net下使用AjaxPro实现二级联动代码  # 基于asp+ajax和数据库驱动的二级联动菜单  # 一个强健 实用的asp+ajax二级联动菜单(有演示和附源程序打包下载)  # 请选择  # 吉林省  # 辽宁省  # 山东省  # 松原市  # 通化市  # 铁岭市  # 日照市  # 锦州市  # 德州市  # 丹东市  # 威海市  # 吉林市  # 长春市  # 大连市  # 这是  # 沈阳市  # 济南市  # 青岛市  # 遍历 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高性价比服务器租赁——企业级配置与24小时运维服务  如何在搬瓦工VPS快速搭建网站?  如何快速建站并高效导出源代码?  Swift中swift中的switch 语句  Python并发异常传播_错误处理解析【教程】  如何用景安虚拟主机手机版绑定域名建站?  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  专业商城网站制作公司有哪些,pi商城官网是哪个?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  如何用狗爹虚拟主机快速搭建网站?  晋江文学城电脑版官网 晋江文学城网页版直接进入  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  潮流网站制作头像软件下载,适合母子的网名有哪些?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  香港网站服务器数量如何影响SEO优化效果?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何选择可靠的免备案建站服务器?  如何选择PHP开源工具快速搭建网站?  网站制作壁纸教程视频,电脑壁纸网站?  Android自定义listview布局实现上拉加载下拉刷新功能  Laravel如何使用Blade组件和插槽?(Component代码示例)  jQuery validate插件功能与用法详解  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Bootstrap整体框架之CSS12栅格系统  手机软键盘弹出时影响布局的解决方法  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Android 常见的图片加载框架详细介绍  如何做网站制作流程,*游戏网站怎么搭建?  如何在万网主机上快速搭建网站?  香港服务器WordPress建站指南:SEO优化与高效部署策略  jQuery 常见小例汇总  如何用花生壳三步快速搭建专属网站?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何用已有域名快速搭建网站?  如何续费美橙建站之星域名及服务?  如何在万网自助建站中设置域名及备案?  Laravel如何与Inertia.js和Vue/React构建现代单页应用  黑客如何利用漏洞与弱口令入侵网站服务器?  如何基于PHP生成高效IDC网络公司建站源码?  Python数据仓库与ETL构建实战_Airflow调度流程详解  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何有效防御Web建站篡改攻击?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  C++用Dijkstra(迪杰斯特拉)算法求最短路径