AJAX | 青训营笔记

124 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第11天

最近在做项目时 发现对AJAX有点遗忘😵 于是打算复习并记录一下💾

AJAX

Ajax不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术

传统网页想要更新内容或提交表单都需要重新加载整个网页

使用ajax技术的网页 通过再后台服务器进行少量的数据交换 就可以实现异步局部更新

增强B/S的体验性

B/S 未来的主流,并且会爆发时的持续增长

H5+网页+客户端+手机端(安卓 、IOS)+小程序

优点

  • 无需刷新页面与服务器端进行通信

  • 允许你根据用户事件来更新部分页面内容

缺点

  • 没有浏览历史,不能回退

  • 存在跨域问题(同源

  • SEO不友好

jQuery

先导入js文件

jQuery.get()

参数

  • url 待载入地址
  • data 待发送key/value参数
  • success 载入成功时回调函数
  • dataType 返回内容格式 xml,json,script,text,html

jQuery.post()
jQuery.getJSON()

jQuery.ajax()

  • url 请求地址
  • data 要发送的数据
  • success 成功之后执行的回调函数 (全局

HTTP

HTTP协议(超文本传输协议),详细规定了浏览器和万维网服务器之间互相通信的规则。

请求报文

重点是格式和参数

行 GET(体空) POST(可设置请求体) / http/1.1

头 Host: .com

Cookie: name=xx

Content-type: application/x-www-form-urlencoded

User-Agent: chrome 83

空行

体 username=admin&password=admin

响应报文

行 HTTP/1.1 200 404 OK

头 Content-Type:

Content-length:2048

空行

jQuery通用方法ajax

           $('button').eq(0).click(function () {
            //参数     1 给谁发 2 发什么 3回调 4响应体的类型
            $.get('http://127.0.0.1:8000/JQ',{a:100,b:200},function (data) {
                console.log(typeof data);
            },'json');
        }) 
           $('button').eq(1).click(function () {
            //参数     1 给谁发 2 发什么 3回调 4响应体的类型
            $.post('http://127.0.0.1:8000/JQ',{a:100,b:200},function (data) {
                console.log(typeof data);
            })
        }) 
            $('button').eq(2).click(function () {
                $.ajax({
                    //url
                    url:'http://127.0.0.1:8000/JQ',
                    //参数
                    data:{a:100,b:200},
                    //类型
                    type:'GET',
                    //响应体结果设置
                    dataType:'json',
                    //成功的回调
                    success:function(data){
                        console.log(typeof data);//可对响应体进行操作
                    },
                    //超时时间
                    timeout:2000,
                    //失败的回调
                    error:function () {
                        console.log("警告警告")
                    },
                    //头信息
                    headers:{
                        c:300,
                        d:400
                    }
                });
            })
        

axios通用方法ajax

<!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>axio 发送ajax</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.26.1/axios.min.js"></script>
    <script>
        window.onload=function () {
            const btn=document.querySelectorAll("button");
​
            //配置 baseURL
            axios.defaults.baseURL='http://127.0.0.1:8000';//简化url路径
            btn[0].onclick=function () {
                //GET请求
                axios.get('/axios',{
                    //url 参数
                    params:{
                        id:100,
                        vip:7
                    },
                    //请求头信息
                    headers:{
                        name:'abc',
                        age:20
                    }
                }).then(value=>{
                    console.log(value);
                });
            }
            btn[1].onclick=function () {
                //POST请求 第二个参数为请求体 axios.post(url,data,)
                axios.post('/axios',{
                        username:'admin',
                        password:'123456'
                    },{
                    //url 参数
                    params:{
                        id:130,
                        vip:72
                    },
                    //请求头信息
                    headers:{
                        name:'bcd',
                        age:24
                    },
                   
                    
                })
            };
            btn[2].onclick=function () {
               axios({
                //请求方法
                method:"post",
                 //url
                url:'/axios',
                //url 参数
                params:{
                    ad:12,
                    bc:34,
                    fg:33
                },
                //头信息参数
                headers:{
                    a:100,
                    b:200
                },
                //请求体参数
                data:{
                  username:'admin',
                  password:'123456'  
                }
                }).then(a=>{
                    console.log(a);//处理返回结果
                    //响应状态码
                    console.log(a.status);
                    //响应状态字符串
                    console.log(a.statusText);
                    //响应头信息
                    console.log(a.headers);
                    //响应体
                    console.log(a.data);
                })
            }
​
        }
    </script>
</head>
<body>
   <button>GET</button>
   <button>POST</button>
   <button>AJAX</button>
</body>
</html>

JSONP

JSON with Paddin 非官方 只支持get请求

CORS

跨域资源共享,CORS是官方的跨域解决方案,他的特点是不需要在客户端做任何操作,完全在服务端中进行处理,支持get post请求

跨越资源共享标准新增了一组HTTP首部字段(响应头),允许服务器声明哪些源站通过浏览器有权限访问哪些资源

💭💭💭

记录前端学习中的问题📜
若本文对你有帮助 欢迎点赞收藏👍📑
若有纰漏,敬请包涵,评论区欢迎指正👂