3.AJAX发送POST请求

AJAX POST请求与响应处理示例
本文提供了一个使用AJAX发送POST请求的实例,当鼠标移到div上时,向服务器发送请求,并将响应内容显示在div内。示例中使用了XMLHttpRequest对象进行异步通信,并展示了如何处理响应数据。同时,给出了一个Express服务器端的响应处理代码,分别对应GET和POST请求。

3.1 AJAX发送POST请求案例

案例:鼠标移动到div内,向服务端发送post请求,将返回响应体显示在div内

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AJAX POST 请求</title>
    <style>
        #result {
            width: 200px;
            height: 100px;
            border: solid 1px black;
        }
    </style>
</head>

<body>
    <div id="result" onmouseover="mOver()"></div>
    <script>
        //获取元素对象
        const result = document.getElementById('result');
        //绑定事件
        function mOver() {
            //1.创建对象
            const xhr = new XMLHttpRequest();
            //2.初始化 设置请求方法和url
            xhr.open('POST', 'http://127.0.0.1:8000/server');
            //3.发送
            xhr.send();
            //4.事件绑定 处理服务端返回的结果
            xhr.onreadystatechange = function () {
                //判断 服务端返回所有结果
                if (xhr.readyState === 4) {
                    //判断 响应状态码
                    //2xx 成功
                    if (xhr.status >= 200 && xhr.status < 300) {
                        result.innerHTML = xhr.response;
                    }
                }
            }
        }
    </script>
</body>

</html>
//1.引入express
const { response } = require('express');
const express = require('express');

//2.创建应用对象
const app = express();

//3.创建路由规则
//request 是对请求报文的封装
//response 是对请求报文的封装
app.get('/server', (require, response) => {
    //设置响应头
    response.setHeader('Access-Control-Allow-Origin', '*');
    //设置响应
    response.send('hello express');
});

app.post('/server', (require, response) => {
    //设置响应头
    response.setHeader('Access-Control-Allow-Origin', '*');
    //设置响应
    response.send('hello AJAX POST');
});

//4.监听端口启动服务
app.listen(8000, () => {
    console.log("服务已经启动,8000端口监听中····")
});

3.1 AJAX-POST设置请求体

区别与GET请求(将参数缀在url之后)
在这里插入图片描述

在这里插入图片描述

### 如何使用 `$.ajax` 发起 POST 请求 在 jQuery 中,可以通过配置 `type` 属性为 `&#39;POST&#39;` 来使用 `$.ajax()` 方法发起 POST 请求。以下是详细的说明和示例代码。 #### 配置项详解 - **url**: 指定发送请求的目标地址。 - **type**: 设置请求方式,这里设置为 `&#39;POST&#39;` 表示发起 POST 请求。 - **data**: 提交的数据,通常是一个键值对对象。 - **success**: 当请求成功时触发的回调函数,参数通常是服务器返回的结果。 - **error**: 可选,当请求失败时触发的回调函数。 以下是一个完整的示例: ```javascript <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(function () { $(&#39;.btnPOST&#39;).on(&#39;click&#39;, function () { $.ajax({ type: &#39;POST&#39;, url: &#39;http://www.example.com/api/submit&#39;, // 替换为目标 URL data: { name: &#39;John Doe&#39;, age: 28 }, // 要提交的数据 success: function (response) { console.log(&#39;Success:&#39;, response); }, error: function (xhr, status, error) { console.error(&#39;Error:&#39;, error); } }); }); }); </script> <button class="btnPOST">使用 $.ajax 发起 POST 请求</button> ``` 上述代码展示了如何通过点击按钮来发起一个 POST 请求,并传递数据给目标 API[^3]。 注意:实际开发中需要替换 `url` 地址为你自己的服务端接口路径。 --- #### 关于 `$.post` 和 `$.ajax` 的区别 虽然 `$.post` 是一种简化版的方法用于快速实现 POST 请求,但它缺少一些高级选项(如错误处理)。因此,在需要更多控制的情况下推荐使用 `$.ajax`[^4]。 例如,下面是比较两者的简单对比: - 使用 `$.post`: ```javascript $.post(&#39;http://www.example.com/api/submit&#39;, { name: &#39;John Doe&#39;, age: 28 }, function(response){ console.log(&#39;Response from server:&#39;, response); }); ``` - 使用 `$.ajax`: ```javascript $.ajax({ type: &#39;POST&#39;, url: &#39;http://www.example.com/api/submit&#39;, data: { name: &#39;John Doe&#39;, age: 28 }, success: function(response) { console.log(&#39;Response from server:&#39;, response); }, error: function(xhr, status, error) { console.error(&#39;An error occurred:&#39;, error); } }); ``` 可以看出,`$.ajax` 更加灵活并支持更多的自定义配置[^1]。 --- #### 数据格式化注意事项 默认情况下,`$.ajax` 将会把 `data` 参数序列化成查询字符串形式(application/x-www-form-urlencoded),但如果希望发送 JSON 格式的请求体,则需额外指定 `contentType` 和手动转换数据结构: ```javascript $.ajax({ type: &#39;POST&#39;, url: &#39;http://www.example.com/api/jsonSubmit&#39;, contentType: &#39;application/json&#39;, // 声明发送的是JSON格式 data: JSON.stringify({ key: &#39;value&#39; }), // 手动将JavaScript对象转为JSON字符串 success: function(data) { console.log(&#39;Data received:&#39;, data); }, error: function(errorThrown) { console.error(&#39;Failed to send request:&#39;, errorThrown); } }); ``` 此部分适用于现代 RESTful 接口设计场景下[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值