AJAX发送POST请求、设置请求参数、设置请求头信息

AJAX发送POST请求

需求:当鼠标经过div的时候发送post请求,并将服务端返回的请求体展示在div中

<div id="result"></div>
#result {
    width: 200px;
    height: 100px;
    border: 1px solid #ccc;
}

设置请求参数在send中设置

const result = document.getElementById("result");
result.addEventListener("mouseover", function () {
    // 1. 创建对象
    const xhr = new XMLHttpRequest();
    // 2. 初始化 设置请求类型与URL
    xhr.open('POST', 'http://127.0.0.1:8000/server');
    // 3. 发送
    xhr.send('a=100&b=200&c=300');
    // 或者 xhr.send('a:100&b:200&c:300');
    // 或者 xhr.send('123456');
    // 4. 事件绑定
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status >= 200 && xhr.status < 300) {
                result.innerHTML = xhr.response;
            }
        }
    }
});
// server.js
// 1. 引入express
const express = require('express');
// 2. 创建应用对象
const app = express();
// 3. 创建路由规则
// request是对请求报文的封装
// response是对响应报文的封装
app.get('/server', (request, response) => {
    // 设置响应头 设置允许跨域
    response.setHeader('Access-Control-Allow-Origin', '*');
    // 设置响应体
    response.send('hello ajax get');
});
app.post('/server', (request, response) => {
    // 设置响应头 设置允许跨域
    response.setHeader('Access-Control-Allow-Origin', '*');
    // 设置响应体
    response.send('hello ajax post');
});
// 4. 监听端口启动服务
app.listen(8000, () => {
    console.log("服务已启动,8000端口监听中......");
})

设置请求头

预定义请求头:

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

自定义请求头:

        xhr.setRequestHeader('name', 'andy'); 

需要在server.js中进行处理 

添加响应头:

response.setHeader('Access-Control-Allow-Headers', '*');

const result = document.getElementById("result");
result.addEventListener("mouseover", function () {
    // 1. 创建对象
    const xhr = new XMLHttpRequest();
    // 2. 初始化 设置请求类型与URL
    xhr.open('POST', 'http://127.0.0.1:8000/server');
    // 设置请求头
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.setRequestHeader('name', 'andy');
    // 3. 发送
    xhr.send('a=100&b=200&c=300');
    // 或者 xhr.send('a:100&b:200&c:300');
    // 或者 xhr.send('123456');
    // 4. 事件绑定
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status >= 200 && xhr.status < 300) {
                result.innerHTML = xhr.response;
            }
        }
    }
});
// server.js
// 1. 引入express
const express = require('express');
// 2. 创建应用对象
const app = express();
// 3. 创建路由规则
// request是对请求报文的封装
// response是对响应报文的封装
app.get('/server', (request, response) => {
    // 设置响应头 设置允许跨域
    response.setHeader('Access-Control-Allow-Origin', '*');
    // 设置响应体
    response.send('hello ajax get');
});
app.post('/server', (request, response) => {
    // 设置响应头 设置允许跨域
    response.setHeader('Access-Control-Allow-Origin', '*');
    // 设置响应体
    response.send('hello ajax post');
});
// all表示可以接收任意类型的请求
app.all('/server', (request, response) => {
    // 设置响应头 设置允许跨域
    response.setHeader('Access-Control-Allow-Origin', '*');
    // 响应头
    // * 表示所有类型的请求头信息都可以接受
    response.setHeader('Access-Control-Allow-Headers', '*');
    // 设置响应体
    response.send('hello ajax post');
});
// 4. 监听端口启动服务
app.listen(8000, () => {
    console.log("服务已启动,8000端口监听中......");
})

 


版权声明:本文为qq_45937484原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。