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

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

页面效果:

  $(function(){
//请求路径
var url="03goods.php";
//option默认内容
var option="<option value='0'>未选择</option>";
//获取jq对象
var $sel1=$(".sel1");
var $sel2=$(".sel2");
var $sel3=$(".sel3");
//自动生成一个<option>元素
function createOption(value,text){
var $option=$("<option></option>");
$option.attr("value",value);
$option.text(text);
return $option;
}
//加载数据
function ajaxSelect($select,id){
//get请求
$.get(url,{"pid":id},function(data){
$select.html(option);
for(var k in data ){
$select.append(createOption(data[k].id,data[k].name));
}
},"json");
} //自动加载第一个下拉菜单
ajaxSelect($sel1,"0"); //选择第一个下拉菜单时加载第二个
$sel1.change(function(){
var id=$sel1.val();
if(id=="0"){
$sel2.html(option);
$sel3.html(option);
}else{
ajaxSelect($sel2,id);
}
}); //选择第二个下拉菜单时加载第三个
$sel2.change(function(){
var $id=$sel2.val();
if($id=="0"){
$sel3.html(option);
}else{
ajaxSelect($sel3,$id);
}
});
});

后台代码:

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

Ajax商品分类三级联动实现的更多相关文章

  1. AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;

    js做日期选择: 实现当前年份的前5后5年的日期选择 实现功能:年份和月份页面加载完成使用JS循环添加,天数根据月份的变化动态添加改变 扩展功能:天数可以根据闰年平年变化 <body> & ...

  2. ajax 实现三级联动

    ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里我用了数据库中的chinastates表, 数据库内容很多,三级联动里的地区名称都在里面,采用的是代号副代号的方式 比如 ...

  3. 在使用ajax实现三级联动调用数据库数据并通过调出的数据进行二级表单查询

    在使用ajax实现三级联动查询数据库数据后再使用ajax无刷新方式使用三级联动调出的数据进行二级查询 但是现在遇到问题,在二级查询的时候期望是将数据以表格的形式展示在三级联动的下方,但是现在在查询后会 ...

  4. ajax 实现三级联动下拉菜单

    ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里我用了数据库中的chinastates表, 数据库内容很多,三级联动里的地区名称都在里面,采用的是代号副代号的方式 比如 ...

  5. PHP ajax 实现三级联动

    在一个单独JS页面中,利用ajax实现三级联动,做成一个三级联动形式,以便于以后随时调用 JS代码: $(document).ready(function(e) { $("#sanji&qu ...

  6. ajax省市区三级联动

    jdbc+servlet+ajax开发省市区三级联动 技术点:jdbc操作数据库,ajax提交,字符拦截器,三级联动 特点:局部刷新达到省市区三级联动,举一反三可以做商品分类等 宗旨:从实战中学习 博 ...

  7. 完整的Ajax及三级联动小练习

    Ajax结构: var name = $("#text_1").val(); $.ajax({ url: "Ashxs/Handler.ashx",//一般处理 ...

  8. Ajax实现三级联动(0520)

    查询数据库中的chinastates表,通过父级代号查询相应省市区. 实现界面: 在js页面实现三级联动 在JQuery中调用Ajax方法(引用JQuery文件一定放在最上面) 用插件的形式,创建三个 ...

  9. php+ajax的三级联动下拉菜单

    封装一个三级联动,就可以在任何页面进行引用了 先写个页面引用一下这个js <head> <meta http-equiv="Content-Type" conte ...

随机推荐

  1. 安全测试 - XSS如何防御

    XSS主要是通过劫持用户COOKIE,执行JS脚本进行攻击 如何发现: 可以使用<script>alert(/yourname/)</script> script最具有代表性也 ...

  2. C++ "+="等运算符使用bug

    昨晚写了一个程序,使用了"+="运算符,结果总不是我想要的,查了一晚没找到,今早才发现: timeInterval = tpImP.staTime - imgPara[serial ...

  3. 【数据结构】简单谈一谈二分法和二叉排序树BST查找的比较

    二分法查找: 『在有序数组的基础上通过折半方法不断缩小查找范围,直至命中或者查询失败.』   二分法的存储要求:要求顺序存储,以便于根据下标随机访问   二分法的时间效率:O(Log(n))   二分 ...

  4. Python 【第五章】:线程、进程和协程

    Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python # -*- coding:utf-8 -*- import t ...

  5. Debian8 从本地源安装软件

    假如你从Debian官网下载了三个DVD镜像,那么就可以设置从本地源来安装软件,例如这里我从官网下载了 debian-8.6.0-amd64-DVD-1.iso,debian-8.6.0-amd64- ...

  6. es6学习笔记(1) let和const命令详解

    let和const命令: Es6新增了let命令,声明变量,但与var不一样的,只在let命令所在的代码块内有效(如for循环之外let声明的变量就不再有效).并且let不像var那样会发生" ...

  7. php跳转页面

    1.header(location:'url'); header函数前面不能有输出 ! 可以先输出到缓存. 2js echo "<script language='javascript ...

  8. marked.js简易手册

    marked.js简易手册 本文介绍的是marked.js.秉持"来之即用"的原则,对它进行简要的翻译和归纳, 安装 在网上引用或者是引用本地文件即可.要么就用命令行: npm i ...

  9. variadic function 的使用

    最近在看<the c programming language> K&R 7.3章 Variable-length Argument Lists  变长参数列表, 笔记一下用法 1 ...

  10. php程序 注册机制

    密码加密方式 1.直接md5加密 2.md5和随机数(也可以是固定参数,如(Rfd4WE784)) 3.md5(md5) 4. 参考 function sp_password($pw,$authcod ...