js--BOM--ajax--get/post--get/post封装

       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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值