AJAX即“Asynchronous Javascript And XML”(异步的JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,用于浏览器和服务器之间进行数据交互。AJAX在浏览器与Web服务器之间使用异步数据传输(HTTP请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。AJAX描述了一种主要使用脚本操作HTTP的Web应用架构,AJAX应用的主要特点是使用脚本操纵HTTP和Web服务器进行数据交换,不会导致页面重载。
ajax应用
1. 实例化一个xhr对象
var xhr = new XMLHttpRequest();
2. 设置请求行
xhr.open(method,url);
3. 设置请求头
xhr.setRequestHeader(key,val)
4. 设置请求体,当请求方式为get的时候,data不需要设置;当请求方式为post的时候,data需要设置
xhr.send([data])
5. 获取响应内容
xhr.onreadystatechange = function(){
//就绪状态当为4的时候表示响应成功回来了
if(this.readystate === 4){
//后台响应状态
if(this.status === 200){
// 获取响应信息
this.response
}
}
}
ajax-get
<!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</title>
<script src="https://cdn.bootcdn.net/ajax/libs/qs/6.10.1/qs.min.js"></script>
<script>
var qq = '1024543289';
var data = {
username: 'zhangsan',
password: '123321'
}
var qs = Qs;
// 1.创建一个xhr实例对象
var xhr = new XMLHttpRequest();
// 2.设置请求头,打开请求连接
xhr.open('get','https://api.muxiaoguo.cn/api/QqInfo?' + qs.stringify(data))
// 3.设置请求体,并发送请求
xhr.send();
// 4.监听连接状态的改变,做出相应
xhr.onreadystatechange = function() {
if(xhr.readyState === 4 && xhr.status === 200){
console.log(xhr.response);
}
}
</script>
</head>
<body>
</body>
</html>
ajax-post
<!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</title>
<script src="https://cdn.bootcdn.net/ajax/libs/qs/6.10.1/qs.min.js"></script>
<script>
var data = {
qq: '1024543289'
}
var qs = Qs;
// 1.创建一个xhr实例对象
var xhr = new XMLHttpRequest();
// 2.设置请求头,打开请求连接
xhr.open('post','https://api.muxiaoguo.cn/api/QqInfo')
// 2.1修改post请求的请求头:Content-Type:x-www-form-urlencoded
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
// 3.设置请求体,并发送请求
xhr.send(qs.stringify(data));
// 4.监听连接状态的改变,做出相应
xhr.onreadystatechange = function() {
if(xhr.readyState === 4 && xhr.status === 200){
console.log(xhr.response);
}
}
</script>
</head>
<body>
</body>
</html>
get/post封装
// 封装ajax请求
var qs = Qs;
// get请求
function get(url,data,success,error,token) {
// 1.实例化xhr对象
var xhr = new XMLHttpRequest();
// 2.设置请求,打开请求连接
// 判断是否需要传参
if(data) {
xhr.open('get',url + '?' + qs.stringify(data))
} else {
xhr.open('get', url)
}
// 配置认证信息
if(token) {
// 配置认证信息
xhr.setRequestHeader('Authorization',token)
}
// 3.发送请求
xhr.send()
// 4.监听连接的状态,并做出响应
xhr.onreadystatechange = function() {
if(xhr.readyState === 4 && xhr.status === 200){
success(xhr.response)
} else if(xhr.readyState === 4 && xhr.status !== 200){
error(xhr.response)
}
}
}
// post方法
function post(url,data,dataType,success,error,token) {
var xhr = new XMLHttpRequest();
xhr.open('post',url)
// 设置请求头
xhr.setRequestHeader('Content-Type',dataType)
if(token) {
// 配置认证信息
xhr.setRequestHeader('Authorization',token)
}
xhr.send(data)
xhr.onreadystatechange = function() {
if(xhr.readyState === 4 && xhr.status === 200) {
success(xhr.response)
} else if(xhr.readyState === 4 && xhr.status !== 200){
error(xhr.response)
}
}
}
<!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">
<script src="https://cdn.bootcdn.net/ajax/libs/qs/6.10.1/qs.min.js"></script>
<script src="./7-utils.js"></script>
<title>Document</title>
<script>
var url = 'https://api.muxiaoguo.cn/api/lajifl'
var data = {
m:'易拉罐'
}
get(url,data,function(res) {
// 将JSON字符串转成普通对象
console.log(JSON.parse(res));
var resp = JSON.parse(res)
// 将后台请求回来的数据,生成dom节点,并且加载到页面上
var dom = document.getElementsByTagName('div')[0]
dom.innerText = resp.data.description.Release_requirement
},function(res) {
console.log(res);
});
// 调用utils中的post方法
var loginUrl = 'http://47.94.46.113:7788/user/login'
var loginData = {
username: 'admin1',
password: '123321'
}
post(loginUrl, JSON.stringify(loginData), 'application/json', function(res){
// 将login接口返回的token秘钥赋值给token变量
var token = JSON.parse(res).data.token
// 请求消息的findAll接口
var articleUrl = 'http://47.94.46.113:7788/article/findAll'
get(articleUrl, null, function(res) {
console.log(res);
}, function(res) {}, token)
}, function(res) {})
</script>
</head>
<body>
<div class="box"></div>
</body>
</html>
数据格式
<!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">
<script src="https://cdn.bootcdn.net/ajax/libs/qs/6.10.1/qs.min.js"></script>
<title>Document</title>
<script>
var qs = Qs
var data = {
username: 'admin1',
password: '123321'
}
console.log('查询字符串',qs.stringify(data));
console.log('JSON字符串',JSON.stringify(data));
</script>
</head>
<body>
</body>
</html>