思路:

1.定义路由
2.查询顶级分类(pid=0)发送至制图
3.循环展示
4.给顶级分类下拉框绑定内容改变事件(JS:onchange、JQ:change)
5.获取到选中的option的value值(本分类的主键id)
6.根据ID发送ajax请求
7.后端定义新方法
8.接收ajax请求的id值,就是要查询的pid的where
9.根据查询的结果返回给ajax(注意:ajax不能直接return 要以JSON格式返回)
10.由于是一个二维数组,需要使用循环进行拼接
11.将循环拼接后的字符串追加至下一个select中
12.注意追加前的option必须要清空

1:模型页面,获取一级分类的数据。

<?php

namespace app\common\model;

use think\Model;

class CateGroyModel extends Model
{
//
protected $table = 'pyg_category'; public static function getCate()
{
return self::select();
}

 2:控制器页面:先将数据表中的分类数据通过thinkphp函数this->assign()函数将数据展示在页面中,进行循环渲染

   public function create()
{
//
$result = CateGroyModel::getCate();
$this->assign('result', $result);
return view();
}
      <div class="formControls col-xs-8 col-sm-9">
<span class="select-box" style="width:150px;">
<select name="" class="select" id="cate_one">
<option value="">请选择一级分类</option>
{foreach $result as $v}
<option value="{$v.id}">{$v.cate_name}</option>
{/foreach}
</select>
</span>
<span class="select-box" style="width:150px;">
<select name="" class="select" id="cate_two">
<option value="">请选择二级分类</option>
</select>
</span>
<span class="select-box" style="width:150px;">
<select name="cate_id" class="select" id="cate_three">
<option value="">请选择三级分类</option>
</select>
</span>
</div>
</div>

3:获取一级分类的数据中的id,通过ajax发送至控制器cate方法

 $(function () {
$('.HuiTab').Huitab();
//给一级分类设置change事件
$('#cate_one').change(function () {
//获取一级分类的商品id
var id = $(this).val();//这里是主键id
$.ajax({
'url': "/pyg/admin/cate",
'type': 'get',
'data': {'id':id},
'dataType': 'json',
'success':function(res){
//将数据进行替换
console.log(res);
var str = '<option value="">请选择二级分类</option>';
$.each(res.data, function (i, v) {
str += '<option value="' + v.id + '">' + v.cate_name + '</option>';
});
$('#cate_two').html(str);
}
});
});

模型代码:思路 ,让pid= 一级分类的id,这样就关联到二级分类的数据,再将数据通过json返回至页面,进行option拼接

//    二级分类
public static function getTwoCate($id)
{
return self::where('pid', $id)->select();
}

控制器代码:

//给二级分类设置change事件
$('#cate_two').change(function () {
//获取二级分类的商品id
var id = $(this).val();
$.ajax({
'url': "/pyg/admin/cate",
'type': 'get',
'data': {'id':id},
'dataType': 'json',
'success': function (response) {
var str = '<option value="">请选择三级分类</option>';
$.each(response.data, function (i, v) {
str += '<option value="' + v.id + '">' + v.cate_name + '</option>';
});
$('#cate_three').html(str);
}
});
});
//   多级分类
public function cate()
{
//接受参数父级pid=0的id;
$id = \request()->get('id');
$data = CateGroyModel::getTwoCate($id);
return json(['code' => 200, 'message' => '一级分类,二级分类,三级分类的pid=主键id', 'data' => $data]);
}

4:三级分类的思路与二级分类的思路相同,同样获取到二级分类id ,将三级分类pid=二级分类id,这样三级分类的数据也就关联上

  //给三级分类设置change事件
$('#cate_three').change(function () {
//获取三级分类商品的id
var id= $(this).val();
$.ajax({
'url': "/pyg/admin/cateTwo",
'type': 'get',
'data': {'id':id},
'dataType': 'json',
'success': function (response) {
var str = '<option value="">请选择商品品牌</option>';
$.each(response.data, function (i, v) {
str += '<option value="' + v.id + '">' + v.name + '</option>';
});
//进行替换
$('#brand').html(str);
}
});
});

tp 5 三级联动查询(自写)的更多相关文章

  1. Ajax案例:三级联动查询员工的信息(三张表进行内连接)

    需求分析: 通过数据库连接池,可以查询到数据库中员工的各种信息,通过点击下拉框的方式实现三级联动,即:没有点击city下拉框,后面两个下拉框中没有值,这样,点击city下拉框,department下拉 ...

  2. 三级联动查询全国省市区(xml与数据库)

    提供有china.xml和china.sql文件,实现全国省市区的三级联动效果 一.xml实现 import java.awt.EventQueue; import javax.swing.JFram ...

  3. JQuery中国省市区无刷新三级联动查询

    之前有写过用<Ajax控件来实现中国的省市区无刷新查询> 今天用JQuery来实现,用Ajax控件和JQuery的优缺点就先不说了. 效果图如下: 下面来结合代码来详细说明一下如何用JQu ...

  4. Ado.Net实现简易(省、市、县)三级联动查询,还附加Access数据

    小弟在博客园驻园不久,初来咋到:将最近写的小程序附上,希望各位大牛们吐槽:激发对程序员围观的童鞋们,赶紧加入IT行业,如果你在上海那简称就是SHIT,哈哈题外话,以下开始切入正题: 坐公交车是旁边偶遇 ...

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

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

  6. ajax三级联动下拉菜单

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

  7. 原生JavaScript的省市县三级联动

    三级联动是我们写表单时必不可少的,比如在写收货地址时,就用到他了,最近在看原生JavaScript,从基础写起,待完善,以后再写个jquery版的. <!DOCTYPE html> < ...

  8. PHP用ajia代码写三级联动下拉

    下面是我做三级联动下拉的步骤以及逻辑 第一步:先做一个省市区表格 第二步:建个PHP页面显示用我是在<body>里放<div>用来接收要显示的省市区表格信息,里面嵌入jquer ...

  9. 使用php ajax写省、市、区、三级联动

    题目要求: 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用china ...

随机推荐

  1. 不会用SpringBoot连接Redis,那就赶紧看这篇

    摘要:如何通过springboot来集成操作Redis. 本文分享自华为云社区<SpringBoot连接Redis操作教程>,作者: 灰小猿. 今天来和大家分享一个如何通过springbo ...

  2. 【Android珍藏】推荐10个炫酷的开源库【转】

    感谢大佬:https://www.jianshu.com/p/d608f0228fd4 前言 技术群里面经常有人问到一些炫酷的UI效果实现方法,有时候我都是给一个相同或者相似效果的Github链接,有 ...

  3. 人工智能与智能系统3-> 机器人学3 | 移动机器人平台

    机器人学的基本工具已经了解完毕,现在开始了解移动机器人,这部分包括机器人平台.导航.定位. 所谓机器人平台就是指机器人的物理结构及其驱动方式.本文将学习两种典型移动机器人平台(四旋翼和轮式车)的运动与 ...

  4. 计算机辅助数据绘图(matlab\python\js)

    1. matlab绘图 官方说明:https://ww2.mathworks.cn/help/matlab/creating_plots/types-of-matlab-plots.html 基本图形 ...

  5. linux13

    ansible-playbook实现MySQL的二进制部署 Ansible playbook实现apache批量部署,并对不同主机提供以各自IP地址为内容的index.html http的报文结构和状 ...

  6. sublime中运行python时编码格式问题

      方案一在程序文件中以下三句 import sys reload(sys) sys.setdefaultencoding('utf8') 方案二在方案一不行的情况下,去除python的问题,subl ...

  7. Spring Security Auth/Acl 实践指南

    目录 导语 Web Api Authentication/Authorization 示例接口 添加 Maven 依赖 实现接口 访问接口 认证/鉴权 配置认证/鉴权 添加 Maven 依赖 创建数据 ...

  8. java中LinkedList ArrayList 数组 HashSet 存储数据测试

    话不多少,直接上代码 import java.text.SimpleDateFormat;import java.util.*; public class testList { public stat ...

  9. JAVA 对象的创建与克隆

    目录 一.对象的4种创建方式 二.通过new创建对象 三.反射 四.克隆对象 浅拷贝 深拷贝 五.反序列化 六.补充 一.对象的4种创建方式 new 创建 反射 克隆 反序列化 二.通过new创建对象 ...

  10. Error from server error dialing backend remote error tls internal error

    # kubectl exec -it mysql-master-8cfb64ff9-ct4dx -n prophet -- /bin/bash Error from server: error dia ...