AJAX学习笔记——发送AJAX的POST请求,模拟from表单提交

关于AJAX发送POST请求,首先演示一个小案例。

当输入用户名:张三,密码:123。点击发送请求按钮

 

这是用post请求模拟的表单提交。接下来看一下如何用AJAX发送POST请求

后端代码:

@WebServlet("/ajaxServlet03")
public class ajaxServlet03 extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("utf-8");
        response.setContentType("text./html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String username = request.getParameter("username");
        String userpwd = request.getParameter("userpwd");
        out.print("用户名:"+username+",密码:"+userpwd);
    }
}

 前端代码(每一步都做了详细笔记):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>发送ajax post请求</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>

<script type="text/javascript">
    window.onload = function () {
        document.getElementById("mybtn").onclick = function () {
            //1.创建XMLHttpRequest对象
            var xhr = new XMLHttpRequest();
            //2.注册回调函数
            xhr.onreadystatechange = function () {
                if (this.readyState == 4){
                    if (this.status == 200) {
                        document.getElementById("mydiv").innerHTML = this.responseText
                    }else {
                        alert(this.status)
                    }
                }
            }
            //3.开启通道
            xhr.open("POST","/AjaxDemo/ajaxServlet03",true)
            //4.发送请求
            //怎么模拟AJAX提交from表单呢?    设置请求头的内容类型
            //设置请求头的内容类型时,必须在open前,send之后。
            xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")//不设置就不会发送请求到servlet

            //放到send()这个函数的小括号当中的数据,会自动在请求体当中提交数据
            //使用JS代码获取用户输入的用户名和密码
            var username = document.getElementById("username").value;
            var userpwd = document.getElementById("userpwd").value;
            //放在send()中的数据,也要注意格式,及key=value&key=value
            xhr.send("username="+username+"&userpwd="+userpwd)
        }
    }
</script>
用户名:<input type="text" id="username"><br>
密码:<input type="text" id="userpwd"><br>
<button id="mybtn">发送ajax POST请求</button>
<div id="mydiv"></div>
</body>
</html>

注意:

xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")

这段代码会用来设置请求头的内容类型的,及用于模拟from表单。

但是这段代码必须放在开启通道后,发送请求前。(即,open前和send后)

AJAX POST请求和GET请求的代码区别在哪里?就是前端代码有区别。后端代码没有区别。

// 4. 发送AJAX POST请求
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") // 设置请求头的内容类型。模拟form表单提交数据。
// 获取表单中的数据
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
// send函数中的参数就是发送的数据,这个数据在“请求体”当中发送。
xhr.send("username="+username+"&password="+password)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在原生ajax中,可以通过以下步骤来提交form表单数据进行post请求。首先,获取form表单元素并将其转换为formData表单对象。然后,创建一个XMLHttpRequest对象,并配置它的请求方式和URL。如果需要发送跨域请求并携带cookie信息,可以设置xhr的withCredentials属性为true。接下来,发送请求并传递formData作为请求参数。最后,监听服务器端给予的响应内容,可以通过xhr的onload事件来获取响应数据。\[1\] 在jQuery中,可以通过以下步骤来提交form表单数据进行post请求。首先,获取form表单元素并将其赋值给一个变量。然后,使用$.ajax方法发送post请求,配置请求的类型、URL和数据。如果需要处理formData类型的数据,可以设置processData和contentType属性为false。最后,可以在success回调函数中处理服务器端返回的响应数据,或在error回调函数中处理请求失败的情况。\[2\] 需要注意的是,无论是原生ajax还是jQuery,如果要模拟form表单提交数据,需要在发送请求前设置请求头的Content-Type为"application/x-www-form-urlencoded",并将表单中的数据以键值对的形式拼接成字符串,并作为send函数的参数发送。\[3\] #### 引用[.reference_title] - *1* *2* [通过ajax提交form表单数据的几种方式](https://blog.csdn.net/chenshanqiang/article/details/103934308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [AJAX学习笔记——发送AJAXPOST请求模拟from表单提交](https://blog.csdn.net/weixin_62117675/article/details/127816648)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值