转载  自  jines     http://www.cnblogs.com/lijinblogs/p/5759399.html

思路分析:
效果:当页面加载时,利用ajax异步向后台请求数据,加载一级商品类别,当选择一级商品时加载二级商品,选择二级商品加载三级商品。

实现:
1、当拿到数据后加载pid为0的商品,并动态创建option将商品追加到一级菜单中,并设置value值
2、当选择一级商品时加载pid=当前id的商品,并创建option将商品追加到二级菜单中,并设置value值
3、当选择二级商品时加载pid=当前id的商品,并创建option将商品追加到三级菜单中,并设置value值

页面效果:

  1. 1 $(function(){
  2. 2 //请求路径
  3. 3 var url="03goods.php";
  4. 4 //option默认内容
  5. 5 var option="<option value='0'>未选择</option>";
  6. 6 //获取jq对象
  7. 7 var $sel1=$(".sel1");
  8. 8 var $sel2=$(".sel2");
  9. 9 var $sel3=$(".sel3");
  10. 10 //自动生成一个<option>元素
  11. 11 function createOption(value,text){
  12. 12 var $option=$("<option></option>");
  13. 13 $option.attr("value",value);
  14. 14 $option.text(text);
  15. 15 return $option;
  16. 16 }
  17. 17 //加载数据
  18. 18 function ajaxSelect($select,id){
  19. 19 //get请求
  20. 20 $.get(url,{"pid":id},function(data){
  21. 21 $select.html(option);
  22. 22 for(var k in data ){
  23. 23 $select.append(createOption(data[k].id,data[k].name));
  24. 24 }
  25. 25 },"json");
  26. 26 }
  27. 27
  28. 28 //自动加载第一个下拉菜单
  29. 29 ajaxSelect($sel1,"0");
  30. 30
  31. 31 //选择第一个下拉菜单时加载第二个
  32. 32 $sel1.change(function(){
  33. 33 var id=$sel1.val();
  34. 34 if(id=="0"){
  35. 35 $sel2.html(option);
  36. 36 $sel3.html(option);
  37. 37 }else{
  38. 38 ajaxSelect($sel2,id);
  39. 39 }
  40. 40 });
  41. 41
  42. 42 //选择第二个下拉菜单时加载第三个
  43. 43 $sel2.change(function(){
  44. 44 var $id=$sel2.val();
  45. 45 if($id=="0"){
  46. 46 $sel3.html(option);
  47. 47 }else{
  48. 48 ajaxSelect($sel3,$id);
  49. 49 }
  50. 50 });
  51. 51 });

后台代码:

  1. 1 <?php
  2. 2 header('Content-Type:text/html; charset=utf-8');
  3. 3 //数据
  4. 4 $arr=array(
  5. 5 //array(分类id,分类名,分类的父id)
  6. 6 array('id'=>'1','name'=>'数码产品','pid'=>'0'),
  7. 7 array('id'=>'2','name'=>'家电','pid'=>'0'),
  8. 8 array('id'=>'3','name'=>'书籍','pid'=>'0'),
  9. 9 array('id'=>'4','name'=>'服装','pid'=>'0'),
  10. 10 array('id'=>'5','name'=>'手机','pid'=>'1'),
  11. 11 array('id'=>'6','name'=>'笔记本','pid'=>'1'),
  12. 12 array('id'=>'7','name'=>'平板电脑','pid'=>'1'),
  13. 13 array('id'=>'8','name'=>'智能手机','pid'=>'5'),
  14. 14 array('id'=>'9','name'=>'功能机','pid'=>'5'),
  15. 15 array('id'=>'10','name'=>'电视机','pid'=>'2'),
  16. 16 array('id'=>'11','name'=>'电冰箱','pid'=>'2'),
  17. 17 array('id'=>'12','name'=>'智能电视','pid'=>'10'),
  18. 18 array('id'=>'13','name'=>'编程书籍','pid'=>'3'),
  19. 19 array('id'=>'14','name'=>'JavaScript','pid'=>'13'),
  20. 20 );
  21. 21 //获取指定分类的商品
  22. 22 function getByPid($arr,$pid){
  23. 23 $result=array();
  24. 24 foreach($arr as $v){
  25. 25 if($v['pid']==$pid){
  26. 26 $result[]=$v;
  27. 27 }
  28. 28 }
  29. 29 return $result;
  30. 30 }
  31. 31 //获取请求参数
  32. 32 $pid=isset($_GET['pid'])?$_GET['pid']:'0';
  33. 33
  34. 34 $result=getByPid($arr,$pid);
  35. 35 //输出json数据
  36. 36 echo json_encode($result);
  37. 37 ?>

ajax 三级联动商品分类(转载)的更多相关文章

  1. ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动

    一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...

  2. 使用 AJAX + 三级联动 实现分类出全国各地的省,市,区

    使用AJAX + 三级联动  实现分类出全国各地的省,市,区 也可以将下面的显示页面所写的 function循环,封装成js文件,就是在写代码软件里创建一个js文件,就和创建一个HTML或php文件一 ...

  3. AJAX 三级联动

    新的封装类 <?php class DBDA { public $host="localhost";//服务器地址 public $uid="root"; ...

  4. ajax三级联动下拉菜单

    ajax写三级联动,先写一个文件类吧,以后用的时候直接调用即可: 来找一张表: 实现: 中国地域的三级联动:省.市.区: 图: 说一下思路: (1)当用户选择省份的时候触发事件,把当前的省份的id通过 ...

  5. 0509 关于Ajax + 三级联动示例

    关于Ajax 1.干什么的? ajax负责抓取用户名信息,传递给服务器进行校验: 2.属性: onreadystatechange:事件,该事件可以感知ajax状态(readyState)的变化.aj ...

  6. [Ajax三级联动 无刷新]

    三级联动 的效果图 html页面: <body> <label class="fl">区域:</label> <select class= ...

  7. 2019.03.25 Ajax三级联动

    所谓三级联动就是,一层接着一层,根据上一层的选择给出这一层的结果 如选择市之后,会给出相应的区,然后到相应的县这就是联动 配置视图 ​from django.core import serialize ...

  8. Ajax三级联动

    全国省市县查询 html代码 <!doctype html> <html> <head> <meta charset="utf-8"> ...

  9. 原生javascript AJAX 三级联动

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. pdf OCR

    pdf转word等其他可排版编辑格式的软件: ABBYY Finereader: 老牌OCR软件了,支持各种文字.图片.表格的识别,效率比较高,中文的识别效果也很好,公式的转换效率较差. InftyR ...

  2. javascript下的arguments,caller,callee,call,apply示例及理解

    (参考:http://justcoding.iteye.com/blog/589111) Arguments  该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments ...

  3. Centos7 linux下 安装 Redis 5.0

    网上找了很多文章,发现不全而且有些问题,安装很多次之后,总结一篇可以使用的,记录之. 环境:Centos7+Redis 5.0,如果环境不符合,本篇仅供参考. 1.准备工作 作者习惯软件安装包放在单独 ...

  4. redis(2)数据类型

    一.数据类型 redis的数据结构是key-value的键值对的形式,但是它和传统String-String的键值对形式不一样,它的value不仅仅是string类型,而是有着丰富的数据类型,如: 1 ...

  5. Oracle Spatial GIS相关研究

    1.Oracle Spatial 概念相关 Oracle Spatial 是Oracle 数据库强大的核心特性,包含了用于存储矢量数据类型.栅格数据类型和持续拓扑数据类型的原生数据类型.Oracle ...

  6. js表单快速取值/赋值 快速生成下拉框

    1.表单取值/赋值公共方法 //表单序列化:文本框的name字段和数据源一致<form id="myForm" onsubmit="return false;&qu ...

  7. (转)快速了解微信小程序的使用,一个根据小程序的框架开发的todos app

    微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...

  8. 数组多功能splice()方法的插入,删除,替换

    多功能splice()插入.删除.替换 <script type="text/javascript"> var arr=['A','B','C','D','E','F' ...

  9. 【转】Spark on Yarn遇到的几个问题

    本文转自 http://www.cnblogs.com/Scott007/p/3889959.html 1 概述 Spark的on Yarn模式,其资源分配是交给Yarn的ResourceManage ...

  10. 1.初次运行git前的配置

    在系统上安装了 Git后,你会想要做几件事来定制你的 Git 环境. 每台计算机上只需要配置一次,程序升级时会保留配置信息. 你可以在任何时候再次通过运行命令来修改它们. Git 自带一个 git c ...