ajax实现二级联动

简介: 本文实例为大家分享了ajax实现二级联动

一、本文实例为大家分享了ajax实现二级联动的具体代码,供大家参考(复制下来就可以用)

1.演示(gif)

在这里插入图片描述

2.数据表

CREATE TABLE `rikao_erjiliandong_category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `category_name` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `pid` int(11) DEFAULT NULL,
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

3.前端代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <%
        request.setAttribute("APP_PATH",request.getContextPath());
    %>
    <title>二级联动</title>
</head>
<body>
    <select id="caidanId" onchange="caidan()">
        <option>请选择</option>
    </select>
    <select id="shangpinId">
        <option  value="-1">请选择</option>
    </select>
</body>
</html>
<script src="${APP_PATH}/js/jquery-3.6.0.js"></script>
<script type="text/javascript">
    let urlpath = "http://localhost:8080/rikao_erjiliandong/ajax/listCategoryPost.do";
    $.post(urlpath,'',function (ret){
        for (let i in ret.data) {
            let p = ret.data[i];
            $('#caidanId').append('<option value="'+p.category_id+'">'+p.category_name+'</option>');
        }
    },'json');


    function caidan(){
        let url = "http://localhost:8080/rikao_erjiliandong/ajax/listCategoryIdPost.do";
        let caidanval = {"pid":$('#caidanId').val()};
        $.get(url,caidanval,function (ret){
            $('#shangpinId').html('<option value="-1" selected>请选择</option>');
            for (let i in ret.data) {
                let p = ret.data[i];
                $('#shangpinId').append('<option value="'+p.pid+'">'+p.category_name+'</option>');
            }
        },'json');
    };


</script>

4.后端代码

4.1.实体类

4.1.1.种类(Category)

package com.wanshi.spring.entity;

import lombok.Data;

@Data
public class Category {
    private String category_id;
    private String category_name;
    private String pid;
}

4.1.2.Ajxa必备提示返回值类(JsonResut)

package com.wanshi.spring.entity;

import lombok.Data;

@Data
public class JsonResut {
    private Integer code;
    private  String msg;
    private  Object data;
}

4.2.接口层(Mapper)

4.2.1.种类接口(CategoryMapper)

package com.wanshi.spring.mapper;

import com.wanshi.spring.entity.Category;

import java.util.List;

public interface CategoryMapper {
    List<Category> listCategory();

    List<Category> listCategorId(String pid);
}

4.3.接口层(Service)

4.3.1.种类接口(CategoryService)

package com.wanshi.spring.service;

import com.wanshi.spring.entity.JsonResut;

public interface CategoryService {
    JsonResut listCategory();

    JsonResut listCategorId(String pid);
}

4.4.实现类(ServiceImpl)

4.4.1.种类(CategoryServiceImpl)

package com.wanshi.spring.service.impl;

import com.wanshi.spring.entity.Category;
import com.wanshi.spring.entity.JsonResut;
import com.wanshi.spring.mapper.CategoryMapper;
import com.wanshi.spring.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CategoryServiceImpl implements CategoryService {
    @Autowired
    private CategoryMapper categoryMapper;
    @Override
    public JsonResut listCategory() {
        JsonResut json = new JsonResut();
        List<Category>  listCategory = categoryMapper.listCategory();
        json.setData(listCategory);
        return json;
    }

    @Override
    public JsonResut listCategorId(String pid) {
        JsonResut json = new JsonResut();
        List<Category>  listCategoryId = categoryMapper.listCategorId(pid);
        json.setData(listCategoryId);
        return json;
    }
}

4.5、控制层(Controller)

package com.wanshi.controller;
import com.wanshi.spring.entity.JsonResut;
import com.wanshi.spring.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/ajax")
@CrossOrigin
public class AjaxController {
    @Autowired
    private CategoryService categoryService;

    @RequestMapping("/listCategory.do")
    public String listCategory(){
        return "/WEB-INF/list.jsp";
    }

    @RequestMapping("/listCategoryPost.do")
    @ResponseBody
    public JsonResut listCategoryPost(){
        return categoryService.listCategory();
    }

    @RequestMapping("/listCategoryIdPost.do")
    @ResponseBody
    public JsonResut listCategoryIdPost(String pid){
        return categoryService.listCategorId(pid);
    }

}

5.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wanshi.spring.mapper.CategoryMapper">
    <select id="listCategory"  resultType="com.wanshi.spring.entity.Category">
        select * from rikao_erjiliandong_category where pid is null
    </select>

    <select id="listCategorId" resultType="com.wanshi.spring.entity.Category" parameterType="String">
        select * from rikao_erjiliandong_category where pid = #{pid}
    </select>
</mapper>
相关文章
|
Ubuntu
百度搜索:蓝易云【Ubuntu系统apt添加第三方PPA源教程】
现在,你已经成功在Ubuntu系统中添加了第三方PPA源。系统将会从该源获取更新和软件包。请注意,添加第三方PPA源时要确保其来源可信,以免引入不安全的软件包。
548 5
|
监控 网络协议 Nacos
Nacos:构建微服务架构的基石
Nacos:构建微服务架构的基石
825 3
|
关系型数据库 MySQL 应用服务中间件
Nginx__高级进阶篇之LNMP动态网站环境部署
Nginx__高级进阶篇之LNMP动态网站环境部署
513 0
|
存储 人工智能 程序员
一文彻底搞明白C语言的数组
本文详细介绍了C语言中的数组,包括定义、初始化(静态与动态)、存储方式、访问方法及常用操作,如遍历、修改元素和作为函数参数传递。数组是C语言中最基本的数据结构之一,掌握它对编程至关重要。下篇将介绍二维数组,敬请期待!
628 0
一文彻底搞明白C语言的数组
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
2409 3
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
XML 缓存 Java
搞透 IOC、Spring IOC ,看这篇就够了!
本文详细解析了Spring框架的核心内容——IOC(控制反转)及其依赖注入(DI)的实现原理,帮助读者理解如何通过IOC实现组件解耦,提高程序的灵活性和可维护性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
Java Maven
震惊!idea专业版如何配置maven国内源手把手教学
文章提供了如何在IDEA专业版中配置Maven使用国内源(如阿里云)的详细步骤,以加快依赖下载速度,并解释了配置国内源的原因。
3905 0
震惊!idea专业版如何配置maven国内源手把手教学
|
Linux 虚拟化
成功解决:Xshell 无法连接虚拟机。如何使用Xshell连接CentOS7虚拟机(详细步骤过程)
这篇文章提供了使用Xshell连接CentOS 7虚拟机的详细步骤,包括编辑VMware的网络设置以启用桥接模式、检查个人电脑适配器虚拟网络的连接情况,以及通过Xshell新建并建立连接的过程。文章还提到了在虚拟机可以访问外网的情况下成功连接的后语,暗示了网络配置的重要性。
成功解决:Xshell 无法连接虚拟机。如何使用Xshell连接CentOS7虚拟机(详细步骤过程)
|
Java Maven Spring
如何在idea中创建Springboot项目? 手把手带你创建Springboot项目,稳!
文章详细介绍了在IDEA中创建Spring Boot项目的过程,包括选择Spring Initializr、配置项目属性、选择Spring Boot版本、导入依赖、等待依赖下载以及项目结构简介。
18636 1
|
存储 负载均衡 监控
Linux-虚拟机迁移步骤
虚拟机迁移步骤
580 0

热门文章

最新文章