ajax的常规操作(原始方式)

java 复制代码
package com.csdn.servlet;
import jakarta.servlet.GenericServlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.annotation.WebServlet;
import java.io.IOException;
import java.io.PrintWriter;
//演示Ajax
@WebServlet("/h09")
public class AjaxServlet extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        String uname = servletRequest.getParameter("uname");
        uname = uname.toUpperCase();
        PrintWriter out = servletResponse.getWriter();
        out.println(uname);
        out.flush();
    }
}
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ajax01</title>
    <script>
        let xmlHttpRequest;
        function sendAjax01() {
            let uname = document.getElementById("uname").value;

            xmlHttpRequest = new XMLHttpRequest();
            xmlHttpRequest.open("Get","h09?uname="+uname,true);//Get:请求方式    h09:请求的目的地   true:异步请求
            //onreadystatechange:当状态发生改变的时候调用sendAjax01CB
            //状态取值有 0-4 ,共 5 个,我们感兴趣的是 4
            //0 表示 xmlHttpRequest未创建
            //1 表示开始发送请求
            //2 表示发送请求完成
            //3 表示开始接收响应
            //4 表示接收响应成功,客户端成功解析服务器返回的响应
            xmlHttpRequest.onreadystatechange = sendAjax01CB;    //CB:call back 回调函数
            //发送请求
            xmlHttpRequest.send();
        }
        function sendAjax01CB() {
            if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
                //获取响应文本
                let msg = xmlHttpRequest.responseText;
                document.getElementById("uname2").innerText = msg;
            }
        }
    </script>
</head>
<body>
        uname:<input type="text" id="uname"/>
        <input type="button" value="发生异步请求" onclick="sendAjax01()"><br/>
        服务器响应回来的内容:<span id="uname2">&nbsp</span>
</body>
</html>
相关推荐
计算机魔术师2 分钟前
英伟达两个月叫停360亿美元生意:芯片巨头怕了反垄断?
前端
创新技术阁11 分钟前
FastapiAdmin 前后端启动全流程详解
前端·后端·fastapi
七牛开发者16 分钟前
实测推荐 3 个 Skill,轻松上手 Codex 网页设计与交付流程
前端·javascript·后端
七牛开发者19 分钟前
拆解 dsh 系列:从源码和版本变化看 DeepSeek Harness 的设计取舍
前端·javascript·后端
谭光志29 分钟前
如何从网站提取设计风格:DOM、计算样式与 DESIGN.md
前端·javascript·agent
深念Y32 分钟前
登录日志与管理员审计日志存储决策
前端·arm开发·后端·微服务·云原生·架构
笨笨饿1 小时前
#121_图传中的H.364编码与MP4的联系
linux·运维·前端·单片机·嵌入式硬件·面试·职场和发展
默_笙1 小时前
☕ 我给 TS 类型做了台"瘦身手术",还顺手用 Docker 起了个 MySQL
前端·javascript
leoZ2312 小时前
AI+前端提效- 06 AI辅助调试排错:前端报错、白屏、兼容问题极速定位
前端·人工智能·chatgpt·状态模式·超分辨率重建·openvino·dreamfusion
ji_shuke3 小时前
Vue 3 使用 History 哨兵和 popstate 拦截浏览器返回
前端·javascript·vue.js·history·哨兵·popstate