Ajax+php实现商品分类三级联动

 更新时间:2016年08月11日 08:48:26   作者:jineslee  
这篇文章主要介绍了Ajax+php实现商品分类三级联动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

当页面加载时,利用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请求中的async:false和async:true的差异

    细数Ajax请求中的async:false和async:true的差异

    下面小编就为大家带来一篇细数Ajax请求中的async:false和async:true的差异。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • jQuery使用ajax跨域请求获取数据

    jQuery使用ajax跨域请求获取数据

    跨域这个词应用非常频繁,主要是因为安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容)。本文给大家介绍jQuery使用ajax跨域请求获取数据,需要的朋友可以参考下
    2015-10-10
  • ajax上传多图到php服务器的方法

    ajax上传多图到php服务器的方法

    这篇文章主要为大家详细介绍了ajax上传多图到php服务器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Ajax教程实例详解

    Ajax教程实例详解

    AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。接下来通过本文给大家介绍Ajax教程实例详解,对ajax相关知识感兴趣的朋友一起学习吧
    2016-03-03
  • jQuery+Ajax实现表格数据不同列标题排序(为表格注入活力)

    jQuery+Ajax实现表格数据不同列标题排序(为表格注入活力)

    CSS也使得表格的布局越来越光彩耀人。但是,无论如何,都掩饰不了那些包装下的死板,接下来为大家介绍下让那些死板的数据 更具有可读性、可用性
    2013-04-04
  • AJAX 图片展示框架56个 提升开发效率

    AJAX 图片展示框架56个 提升开发效率

    随着Lightbox和image Gallery的广泛应用,目前基于异步刷新技术动态展示图片的框架已经是百家争鸣,在这里我收集汇总了56个比较通用的框架,与大家分享!
    2009-08-08
  • ajax 怎么设置超时(一个action执行了2遍)

    ajax 怎么设置超时(一个action执行了2遍)

    一个action执行了2遍 ,这个操作大致需要5分多钟才能完成,于是搜了几个可以设置超时的地方,希望对大家有所帮助
    2014-08-08
  • MPBrowser简易图片浏览器 v1.0

    MPBrowser简易图片浏览器 v1.0

    MPBrowser简易图片浏览器 v1.0...
    2006-09-09
  • 基于Ajax的聊天机器人功能的实现

    基于Ajax的聊天机器人功能的实现

    这篇文章主要介绍了基于Ajax的聊天机器人,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • 基于HTML5的可预览多图片Ajax上传

    基于HTML5的可预览多图片Ajax上传

    这篇文章主要为大家详细介绍了基于HTML5的可预览多图片Ajax上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06

最新评论