使用Ajax发送post请求提交表单数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        onload = function () {
            document.getElementById("btn").onclick = function () {
                let xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function () {
                    if(this.readyState === 4) {
                        if(this.status === 200) {
                            document.getElementById("mydiv").innerHTML = this.responseText;
                        }else {
                            alert(this.status);
                        }
                    }
                }
                xhr.open("post","/ajax/test03",true);
                /*
                 使用Ajax发送post请求提交表单数据的时候,不能将表单中的数据写在请求路径上,只有get请求
                 才是这样的,post请求的数据在请求体中,我们应该将数据放在send(String str)方法中,
                 数据严格按照key=value&key=value....的方式提交。放在send(String str)方法中的数
                 据自动会放在请求体中。
                */
                let username = document.getElementById("username").value;
                let password = document.getElementById("password").value;
                /*
                 注意:使用Ajax发送post请求提交表单数据的时候,要在open方法和send方法之间加以下代码:
                    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                    这句代码的第二个参数不需要记,只需要在form标签中敲"enc"就能看见。
                */
                xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                xhr.send("username="+username+"&password="+password);
            }
        }
    </script>
</head>
<body>
    用户名: <input type="text" id="username">
    <br>
    密码: <input type="password" id="password">
    <br>
    <input type="button" id="btn" value="提交">
    <div id="mydiv"></div>
</body>
</html>
package AjaxRequest;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/test03")
public class AjaxRequest03 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        out.println("username=" + username + ", password=" + password);
    }
}

运行结果:

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序猿ls

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

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

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

打赏作者

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

抵扣说明:

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

余额充值