三种请求数据方式总结

89 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

“金秋十月,我要连续30天更文,做劳模,拿手机摄影神器!点击查看活动详情 “即可成功参与 Ajax 是浏览器中的技术:用来实现客户端网页请求服务器的数据

XMLHttpRequest请求

原生的请求数据,基于 new 出来的 XMLHttpRequest 实例对象,可以发起 Ajax 的请求。

// 创建 xhr 对象
const xhr = new XMLHttpRequest();
// 调用 xhr.open() 函数
xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks');
// 调用 xhr.send() 函数
xhr.send();
// 监听 load 事件
xhr.addEventListener('load', function() {
    console.log(xhr.response);//返回的是纯字符串格式的对象
});

主要的4个步骤实现:

  1. 创建 xhr 对象
  2. 调用 xhr.open() 函数:指定 请求方式、请求地址
  3. 调用 xhr.send() 函数:发起ajax请求
  4. 监听 load 事件

发送GET请求不带参数

            //声明XML对象
            let xhr = new XMLHttpRequest()
            //请求方式、请求地址
            xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks')
            //发送请求
            xhr.send()
            //处理响应结果
            xhr.addEventListener('load', function () {
                //xhr.response  返回的是纯字符串格式的对象
                console.log(JSON.parse(xhr.response))//将字符串格式转换成对象格式
            })

发送GET请求带参数

get请求参数放在路径末尾

            //声明XML对象
            let xhr = new XMLHttpRequest()
            //请求方式、请求地址     get请求参数放在路径末尾  ?分隔,&链接
            xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks?id=1')
            //发送请求
            xhr.send()
            //处理响应结果
            xhr.addEventListener('load', function () {
                //xhr.response  返回的是纯字符串格式的对象
                console.log(JSON.parse(xhr.response))//将字符串格式转换成对象格式
            })

GET发送的参数有三种情况:1、没有传参数(undefined)

2、传的是字符串a=1&b=2(String)

3、传的是对象(Object)

发送POST请求带参数

            let xhr = new XMLHttpRequest()
            //设置 请求方式  请求地址
            xhr.open('POST', 'http://www.liulongbin.top:3009/api/addbook')
            //设置请求参数  post请求发送参数要设置传递参数的格式
​
            //传递a=1&b=1格式
            /* xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xhr.send('bookname=你你你你&author=刘慈欣&publisher=北京人民出版社'); */
​
            //传递json格式
            xhr.setRequestHeader('Content-Type', 'application/json');
            xhr.send(JSON.stringify({ bookname: '你我他', author: '123', publisher: '123' }));
​
            //处理响应
            xhr.onload = function () {
                console.log(JSON.parse(xhr.response))
            }

1、post发送请求时要设置传递参数的格式,但是数据的格式是字符串格式还是json格式由后端决定

2、 Content-Type:设置传递数据格式

发送FormData对象数据

        //创建FormData对象
        let fd = new FormData()
        //创建属性
        fd.append('name', '123')
        document.querySelector('button').onclick = function () {
            //创建对象
            let xhr = new XMLHttpRequest()
            //设置 请求方式 请求地址
            xhr.open('POST', 'http://www.liulongbin.top:3009/api/formdata')
            //发送请求
            xhr.send(fd)
            //处理响应结果
            xhr.onload = function () {
                console.log(JSON.parse(xhr.response))
            }
        }

POST传递参数三种类型 1、FormData类型

2、object类型

3、String 类型

$.ajax请求

综合写法

 $.ajax({
           url:'请求路径',
           type:'请求方式',
           data:'请求数据体',
           success: function(backData){
               console.log(backData)//处理响应
            }
      });

GET请求简写法

//get简写
  $.get('http://www.liulongbin.top:3009/api/get', { id: 1 }, function (res) {
     console.log(res)
   })

POST请求简写

 //post简写
   $.post('http://www.liulongbin.top:3009/api/post', { user: '123', age: 18 }, function (res) {
      console.log(res)
   })

简写data都省略

axios请求

综合写法

axios({
         url:'请求路径',
         method:'请求方式',
         data: { 'post请求参数'},
         params: { 'get请求参数'}
      }).then(res=>{
           //成功回调
           console.log(res)
      });

GET请求简写

 axios.get('http://www.liulongbin.top:3009/api/get', {
    params: {
            username: '123',
            password: 'qwe'
            }
     }).then(({ data: res }) => {
         console.log(res)
  })

注意:get请求不带参数则省略 params: {}

POST请求简写

 axios.post('http://www.liulongbin.top:3009/api/post', {
             username: '123',
             password: 'qwe'
           
     }).then(({ data: res }) => {
         console.log(res)
     })

注意:post请求一般都带参数,直接写请求的数据,不用data:{}

发送FormData对象数据

      //创建formdata对象
       let jd = new FormData()
       jd.append('name', '张三')
       jd.append('age', 12)
       //发送axios请求
        axios({
          url: 'http://www.liulongbin.top:3009/api/formdata',
          method: 'post',
           data:  jd ,
         }).then(({ data: res }) => {
              //成功回调
               console.log(res)
         });

1、xios发起请求,返回的数据,自己添加了其他属性,所以只想获取数据的话需要解构

2、其他两个方法,直接返回数据,不需要解构