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

后台代码:

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

ajax 三级联动商品分类(转载)的更多相关文章
- ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动
一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...
- 使用 AJAX + 三级联动 实现分类出全国各地的省,市,区
使用AJAX + 三级联动 实现分类出全国各地的省,市,区 也可以将下面的显示页面所写的 function循环,封装成js文件,就是在写代码软件里创建一个js文件,就和创建一个HTML或php文件一 ...
- AJAX 三级联动
新的封装类 <?php class DBDA { public $host="localhost";//服务器地址 public $uid="root"; ...
- ajax三级联动下拉菜单
ajax写三级联动,先写一个文件类吧,以后用的时候直接调用即可: 来找一张表: 实现: 中国地域的三级联动:省.市.区: 图: 说一下思路: (1)当用户选择省份的时候触发事件,把当前的省份的id通过 ...
- 0509 关于Ajax + 三级联动示例
关于Ajax 1.干什么的? ajax负责抓取用户名信息,传递给服务器进行校验: 2.属性: onreadystatechange:事件,该事件可以感知ajax状态(readyState)的变化.aj ...
- [Ajax三级联动 无刷新]
三级联动 的效果图 html页面: <body> <label class="fl">区域:</label> <select class= ...
- 2019.03.25 Ajax三级联动
所谓三级联动就是,一层接着一层,根据上一层的选择给出这一层的结果 如选择市之后,会给出相应的区,然后到相应的县这就是联动 配置视图 from django.core import serialize ...
- Ajax三级联动
全国省市县查询 html代码 <!doctype html> <html> <head> <meta charset="utf-8"> ...
- 原生javascript AJAX 三级联动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- pdf OCR
pdf转word等其他可排版编辑格式的软件: ABBYY Finereader: 老牌OCR软件了,支持各种文字.图片.表格的识别,效率比较高,中文的识别效果也很好,公式的转换效率较差. InftyR ...
- javascript下的arguments,caller,callee,call,apply示例及理解
(参考:http://justcoding.iteye.com/blog/589111) Arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments ...
- Centos7 linux下 安装 Redis 5.0
网上找了很多文章,发现不全而且有些问题,安装很多次之后,总结一篇可以使用的,记录之. 环境:Centos7+Redis 5.0,如果环境不符合,本篇仅供参考. 1.准备工作 作者习惯软件安装包放在单独 ...
- redis(2)数据类型
一.数据类型 redis的数据结构是key-value的键值对的形式,但是它和传统String-String的键值对形式不一样,它的value不仅仅是string类型,而是有着丰富的数据类型,如: 1 ...
- Oracle Spatial GIS相关研究
1.Oracle Spatial 概念相关 Oracle Spatial 是Oracle 数据库强大的核心特性,包含了用于存储矢量数据类型.栅格数据类型和持续拓扑数据类型的原生数据类型.Oracle ...
- js表单快速取值/赋值 快速生成下拉框
1.表单取值/赋值公共方法 //表单序列化:文本框的name字段和数据源一致<form id="myForm" onsubmit="return false;&qu ...
- (转)快速了解微信小程序的使用,一个根据小程序的框架开发的todos app
微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...
- 数组多功能splice()方法的插入,删除,替换
多功能splice()插入.删除.替换 <script type="text/javascript"> var arr=['A','B','C','D','E','F' ...
- 【转】Spark on Yarn遇到的几个问题
本文转自 http://www.cnblogs.com/Scott007/p/3889959.html 1 概述 Spark的on Yarn模式,其资源分配是交给Yarn的ResourceManage ...
- 1.初次运行git前的配置
在系统上安装了 Git后,你会想要做几件事来定制你的 Git 环境. 每台计算机上只需要配置一次,程序升级时会保留配置信息. 你可以在任何时候再次通过运行命令来修改它们. Git 自带一个 git c ...