PHP+AJAX2级联动下拉列表

 http://www.phpchina.com/bbs/thread-13376-1-1.html

PHP+AJAX2级联动下拉列表(简单好用)
由于大4了,接下来要忙找工作和学校一些繁琐的事情,接下来的1,2个月可能没有时间写原创作品,今晚再弄一个,希望大家喜欢,别忘了支持我哦!^_^。这次给大家展示的是非常常用的一个ajax功能--联动下拉列表,本程序采用2级联动,根据数据库的内容用ajax处理下拉列表内容,实现根据用户需求取得下拉选项,交互性强,更新容易。废话少说,不如正题,这次依然象往常一样提供截图和源码下载,首先还是AJAX框架:
CODE:

var http_request=false;
  function send_request(url){//初始化,指定处理函数,发送请求的函数
    http_request=false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest){//Mozilla浏览器
  http_request=new XMLHttpRequest();
  if(http_request.overrideMimeType){//设置MIME类别
    http_request.overrideMimeType("text/xml");
  }
}
else if(window.ActiveXObject){//IE浏览器
  try{
   http_request=new ActiveXObject("Msxml2.XMLHttp");
  }catch(e){
   try{
   http_request=new ActiveXobject("Microsoft.XMLHttp");
   }catch(e){}
  }
    }
if(!http_request){//异常,创建对象实例失败
  window.alert("创建XMLHttp对象失败!");
  return false;
}
http_request.onreadystatechange=processrequest;
//确定发送请求方式,URL,及是否同步执行下段代码
    http_request.open("GET",url,true);
http_request.send(null);
  }
  //处理返回信息的函数
  function processrequest(){
   if(http_request.readyState==4){//判断对象状态
     if(http_request.status==200){//信息已成功返回,开始处理信息
   document.getElementById(reobj).innerHTML=http_request.responseText;
  }
  else{//页面不正常
   alert("您所请求的页面不正常!");
  }
   }
  }
  function getclass(obj){
   var pid=document.form1.select1.value;
   document.getElementById(obj).innerHTML="<option>loading...</option>";
   send_request('doclass.php?pid='+pid);
   reobj=obj;
  }


这个程序的核心就是动态添加

<option>......</option>

服务器端是进行数据的检索,很简单:

<?php
  header("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码
  $pid=$_GET['pid'];
  $db=mysql_connect("localhost","root","7529639"); //创建数据库连接
  mysql_query("set names 'GBK'");
  mysql_select_db("menuclass");
  $sql="select classname from menu where parentid=".$pid."";
  $result=mysql_query($sql);
  
  //循环列出选项
  while($rows=mysql_fetch_array($result)){
   echo '<option>';
      echo $rows['classname'];
   echo "</option>/n";
  }
?>

再看看列表页面的html:
CODE:
  <script language="javascript" src="ajaxmenu.js"></script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>ajax2级联动菜单演示</title>
</head>
<body>
<form name="form1">
<select name="select1" id="class1" style="width:100;" onChange="getclass('class2');">
  <option selected="selected"></option>
  <option value="1">大类1</option>
  <option value="2">大类2</option>
</select>
<select name="select2"id="class2" style="width:100;">
</select>
</form>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是利用ajax实现三级联下拉列表的步骤: 1. 在HTML页面中创建三个select标签,分别代表省、市、县(或区)的下拉列表。 2. 在JavaScript中定义一个函数,用于获取省份数据。该函数会向服务器发送一个ajax请求,并将返回的数据填充到省份下拉列表中。 3. 在省份下拉列表中添加一个onchange事件,当用户选择省份时,该事件会触发一个函数。 4. 该函数会向服务器发送一个ajax请求,请求该省份下所有的城市数据,并将返回的数据填充到城市下拉列表中。 5. 在城市下拉列表中添加一个onchange事件,当用户选择城市时,该事件会触发一个函数。 6. 该函数会向服务器发送一个ajax请求,请求该城市下所有的县(或区)数据,并将返回的数据填充到县(或区)下拉列表中。 7. 完成以上步骤后,用户就可以通过选择三个下拉列表来完成三级联选择。 下面是一个简单的示例代码,仅供参考: HTML代码: ``` <select id="province"></select> <select id="city"></select> <select id="county"></select> ``` JavaScript代码: ``` // 获取省份数据 function getProvince() { $.ajax({ type: "GET", url: "province.json", dataType: "json", success: function(data) { var html = ""; for (var i = 0; i < data.length; i++) { html += "<option value='" + data[i].id + "'>" + data[i].name + "</option>"; } $("#province").html(html); getCity(); } }); } // 获取城市数据 function getCity() { var provinceId = $("#province").val(); $.ajax({ type: "GET", url: "city.json", dataType: "json", data: { provinceId: provinceId }, success: function(data) { var html = ""; for (var i = 0; i < data.length; i++) { html += "<option value='" + data[i].id + "'>" + data[i].name + "</option>"; } $("#city").html(html); getCounty(); } }); } // 获取县(或区)数据 function getCounty() { var cityId = $("#city").val(); $.ajax({ type: "GET", url: "county.json", dataType: "json", data: { cityId: cityId }, success: function(data) { var html = ""; for (var i = 0; i < data.length; i++) { html += "<option value='" + data[i].id + "'>" + data[i].name + "</option>"; } $("#county").html(html); } }); } $(function() { getProvince(); // 初始化省份数据 $("#province").change(function() { getCity(); // 当省份变化时,获取城市数据 }); $("#city").change(function() { getCounty(); // 当城市变化时,获取县(或区)数据 }); }); ``` 说明: 1. 该示例中使用了jQuery库来简化ajax请求的操作。 2. 省份、城市、县(或区)数据的格式可以自行定义,示例中使用了json格式的数据。 3. 在实际应用中,服务器端需要根据请求参数返回相应的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值