ajax请求和jQuery封装ajax

1.get和post请求是什么?

    HTTP协议中的两种发送请求的方法。

2.http请求中get和post方法区别。

(1)get的数据可以在url中看到,post请求不显示在url中的;
(2)get请求有url长度限制,而post请求长度没有限制的;
(3)get请求的数据可以收藏为书签,post请求到的数据不可收藏为书签;
(4)get请求后,按后退按钮、刷新按钮无影响,post数据会被重新提交;
(5)get的编码类型:application/x-www-form-url,但post有多种编码类型;
(6)get历史参数会被保留在浏览器里,post不会保存在浏览器中的;
(7)get只允许ASCII.post没有编码限制,允许发二进制的;
(8)get与post相比,GET安全性较差,因为所发的数据是URL的⼀部分。
参考网站:https://segmentfault.com/a/1190000037744412

3.实现ajax请求的方式
    (1) 无参的get请求
	//1.创建实例对象
      var xhr =new XMLHttpRequest();
    //2.打开一个链接  第一个参数get是请求方式  第二个参数URL是一个接口地址
      xhr.open('get','url');
    //3.发送请求  
      xhr.send();
    //4.接受响应
      xhr.onreadystatechange=function(){
        // xhr.readyState===4&&xhr.status===200  表示请求发送成功
         if(xhr.readyState===4&&xhr.status===200){
             //发送成功打印请求响应 
             console.log(xhr.responseText);
         }
         else if(xhr.readyState===4&&xhr.status===500){
             //未发送成功打印请求响应 
             console.log(xhr.responseText);
         }
     }
      (2) 带有参数的get请求
<title>有参的get请求</title>
	//在BootCDN中引入  Qs.stringify(obj) 
    <script src="https://cdn.bootcdn.net/ajax/libs/qs/6.10.1/qs.js"></script>
    <script>
       var qs =Qs;
     // get 请求要携带参数  参数携带在地址栏上--》不安全  显示的
     // post参数携带请求体重  安全 隐式的
     // 1.创建实例对象
       var xhr = new XMLHttpRequest();
     //2.打开一个链接
       let obj={
           page:1,
           pageSize:10
       }
       console.log(qs.stringify(obj));
     //转换为查询字符串 
       xhr.open('get','url' + '?'+qs.stringify(obj));
     //3.发送请求
       xhr.send();
     //4.接受响应
       xhr.onreadystatechange=function(){
           if(xhr.readyState===4&&xhr.status ===200){
               console.log(xhr.responseText);
           }
       }
    </script>
      (3) 带有参数的post请求
    //声明一个obj对象  'javascript对象'--》转换为JSON格式
      let obj={
          username:"admin1",
          password:"123321"
      }
    // 1.创建实例对象
      var xhr = new XMLHttpRequest();
    //2.打开一个链接
      // console.log(qs.stringify(obj));
      //转换为查询字符串   
      xhr.open('post','url');
      //设置请求头  
      xhr.setRequestHeader('Content-Type','application/json')
    //3.发送请求  
      // 登录接口--需要携带一个json格式的参数  “属性值”:“属性名”
      xhr.send(JSON.stringify(obj));//转换成JSON格式的字符串
    //4.接受响应
      xhr.onreadystatechange=function(){
          if(xhr.readyState===4&&xhr.status === 200){
              console.log(xhr.responseText);
          }
      }
4.jQuery封装的ajax
 <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
 <script>
    // 入口函数
    $(function(){
        // 给登录按钮绑定事件
        $('.button').click(function(){
            //声明对象
            let obj ={
                username:"admin1",
                password:123321
            }
            // 检验是否绑定成功
            // alert('1');
            $.ajax({
                //配置对象
                // 请求路径
                url:"",
                //请求方式
                methods:"post",  //或者使用type
                //请求携带的参数
                data:JSON.stringify(obj),
                //请求头设置
                headers:{
                    'Content-Type':'application/json'
                },
                //成功回调函数
                success:function(res){
                    // console.log(res);
                    sessionStorage.setItem('token',res.data.token);
                    //设置全局变量
                    $.ajaxSetup({
                        headers:{
                            //1.认证 2.查询
                            'Authorization':sessionStorage.getItem('token')
                        }
                    })
                },
                //成功回调函数
                error:function(err){
                    // console.log(err);
                }
            })
        })
    
    //给加载按钮绑定事件
    $('#load').click(function(){
        $.ajax({
            //请求接口
            url:"url",
            //请求方式
            methods:"get",
            //成功回调
            success:function(res){
                // console.log(res);
            },
            //失败回调
            error:function(err){
                // console.log(err);
            }
        })
    })
    })
</script>
<body>
    <button>登录</button>
    <button id="load">加载数据</button>
</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值