jQuery 使用$.ajax()方法进行级联查询

jQuery 使用$.ajax()方法进行级联查询

$.ajax()方法可以使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML 或 JSON 同时能够把接收的数据更新到 DOM 对象

$.ajax()语法

$.ajax( { name:value, name:value, ... } )
说明:参数是 json 的数据,包含请求方式,数据,回调方法等
async : 布尔值,表示请求是否异步处理。默认是 true
contentType :发送数据到服务器时所使用的内容类型。默认是:
"application/x-www-form-urlencoded"。
data:规定要发送到服务器的数据,可以是:string, 数组,多数是 json
dataType:期望从服务器响应的数据类型。jQuery 从 xml, json, text,, html 这些中测试最可能
的类型
"xml" - 一个 XML 文档
"html" - HTML 作为纯文本
"text" - 纯文本字符串
"json" -JSON 运行响应,并以对象返回
error(xhr,status,error):如果请求失败要运行的函数, 其中 xhr, status, error 是自定义的形参名
success(result,status,xhr):当请求成功时运行的函数,其中 result, status, xhr 是自定义的形参
名
type:规定请求的类型(GETPOST 等),默认是 GETget,post 不用区分大小写
url:规定发送请求的 URL

demo

准备一个html文件和一个java类实现HttpServlet接口并且重写doget方法或者dopost方法

编写一个html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="../jquery-3.6.0/jquery-3.6.0.js"></script>
</head>
<!--使用jquery和ajax进行异步处理-->
<body>
<!--创建两个选择栏,根据第一个选择栏的选择情况改变第二个选择栏的内容-->
<select id="main">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
</select>
<select id="second">
    <option>1</option>
    <option>1</option>
    <option>1</option>
    <option>1</option>
    <option>1</option>
</select>
</body>
</html>
<script>
    var $getmainselect = $("#main"); //获取第一个选择栏的jquery对象
    var $getsecondselect = $("#second"); //获取第二个选择栏的jquery对象
    var $getsecondoption = $("#second>option"); //获取第二个选择栏的全部选项的jquery对象
    //当第一个选择栏发生改变时进行触发异步级联操作
    $getmainselect.on("change",function (){
        var $getmainselected = $("#main>option:selected")
        $.ajax({
            async:true, 
            data:{"key":$getmainselected.text()},
            dataType:"json",
            error:function (){
                $getsecondselect.empty();
            },
            success:function (data){
                $getsecondoption.text(data.key);
            },
            type:'GET',
            url:"../queryajaxtest"
        })
    })
</script>

编写一个java类实现HttpServlet接口

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class QueryAjaxTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*使用json方式传值*/
        String json="{}"; //当传值为空的时候返回{}
        resp.setContentType("application/json;charset=UTF-8");
        req.setCharacterEncoding("utf-8");
        String key = req.getParameter("key"); //根据参数名获取参数
        /*这里可以加上根据获取到的参数进行数据库查询和处理结果集之类的操作*/
        /*网络上有很多根据类来构建json字符串的jar包 例如:jackson*/
        json = "{\"key\":\""+key+"\"}";  //因为是demo所以我就把参数本身以json方式返回
        PrintWriter out= resp.getWriter();
        out.print(json); //输出流输出
        out.flush();//刷新通道
        out.close();//关闭
    }
}

Servlet注册

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
>
    <servlet>
        <servlet-name>queryajaxtest</servlet-name>
        <servlet-class>test01.QueryAjaxTest</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>queryajaxtest</servlet-name>
        <url-pattern>/queryajaxtest</url-pattern>
    </servlet-mapping>
</web-app>

demo展示

当第一个选择框改变内容时,第二个选择框会根据第一个选择框的内容进行改变
在这里插入图片描述

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leach爱喝星冰乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值