设置请求头信息:
md.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
Content-Type:设置请求体的内容的类型,application/x-www-form-urlencoded');
是查询字符串的固定写法
md.setRequestHeader('name','huse');//自定义设置的不是预定义设置的
比如Content-Type就是预定义设置的
// *:表示所有的头信息我都可以接受
response.setHeader('Access-Control-Allow-Origin','*')
response.setHeader('Access-Control-Allow-Headers','*')
const express = require("express");
const app = express();
app.get('/server',(request,response) =>{
response.setHeader('Access-Control-Allow-Origin','*')
response.send('Hello Ajax')
});
//all:接受任意类型的请求 ->改post为all
app.all('/server',(request,response) =>{
// *:表示所有的头信息我都可以接受
response.setHeader('Access-Control-Allow-Origin','*')
response.setHeader('Access-Control-Allow-Headers','*')
response.send('你看到了这段话就是猪')
});
app.listen(8000,()=>{
console.log('start server...,port:8000')
})
<!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>
</head>
<body>
<div style="width: 200px;height:100px;border:2px solid #f40" id="ID"></div>
<script>
const ID = document.getElementById('ID')
ID.addEventListener('mouseover',function(){
const md = new XMLHttpRequest();
md.open('POST','http://127.0.0.1:8000/server');
md.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
md.setRequestHeader('name','huse');//自定义设置的不是预定义
//自定义设置请求头信息
md.send('a:100&b:200')
md.onreadystatechange = function(){
if(md.readyState === 4)
{
if(md.status >= 200 && md.status < 300)
{
ID.innerHTML = md.response;
}
}
}
})
</script>
</body>
</html>
笔记
JSON响应事件:
鼠标按下事件onkeydown
const data = {
name:'deng'
}
//对data这个对象进行字符串转换
let str = JSON.stringify(data)
if(md.readyState === 4)
{
if(md.status >= 200 && md.status < 300)
{
// console.log(md.response);
// ID.innerHTML = md.response;
//手动数据转换:
let data = JSON.parse(md.response)
console.log(data)
ID.innerHTML = data.name
//自动数据转换,就要设置响应体数据的类型
//md.responseType = 'Type'
}
Json数据的响应
需求:建立一个div框,在当前窗口下,当你按下鼠标中任意键,就会向服务端发起请求,服务器返回响应结果,然后我们把响应结果渲染在div
<div style="width: 200px;height:100px;border:2px solid #f40" id="ID"></div>
<script>
const ID = document.getElementById('ID')
window.onkeydown = function(){
// console.log('1')
const md = new XMLHttpRequest();
md.responseType = 'json'
md.open('POST','http://127.0.0.1:8000/json-server');
md.send();
md.onreadystatechange = function(){
if(md.readyState === 4)
{
if(md.status >= 200 && md.status < 300)
{
// console.log(md.response);
// ID.innerHTML = md.response;
//手动数据转换:
// let data = JSON.parse(md.response)
// console.log(data)
// ID.innerHTML = data.name
//自动数据转换,就要设置响应体数据的类型
ID.innerHTML = md.response.name
console.log(md.response)
}
}
}
}
const express = require("express");
const app = express();
app.get('/server',(request,response) =>{
response.setHeader('Access-Control-Allow-Origin','*')
response.send('Hello Ajax')
});
//all:接受任意类型的请求 ->改post为all
app.all('/server',(request,response) =>{
// *:表示所有的头信息我都可以接受
response.setHeader('Access-Control-Allow-Origin','*')
response.setHeader('Access-Control-Allow-Headers','*')
response.send('你看到了这段话就是猪')
});
app.all('/json-server',(request,response) =>{
// *:表示所有的头信息我都可以接受
response.setHeader('Access-Control-Allow-Origin','*')
response.setHeader('Access-Control-Allow-Headers','*')
const data = {
name:'deng'
}
//对data这个对象进行字符串转换
let str = JSON.stringify(data)
response.send(str)
});
app.listen(8000,()=>{
console.log('start server...,port:8000')
})
取消请求:
<script>
const btns = document.querySelectorAll('button');
let x = null;
btns[0].onclick = function(){
x = new XMLHttpRequest();
x.open('GET','http://127.0.0.1:8000/delay');
x.send();
}
btns[1].onclick = function(){
console.log('1')
x.abort();
}
</script>
//针对网络延时
app.get('/delay',(request,response) => {
response.setHeader('Access-Control-Allow-Origin','*')
setTimeout(() => {
response.send('overtime_response');
},3000)
});