Ajax总结

100 阅读1分钟

1、axios体验

<body>
    <button>按钮</button>
    <!-- 要想使用 axois,必须先导入 -->
    <script src="./lib/axios.js"></script>
    <script>
        // 点击按钮,发送ajax
        let button = document.querySelector('button');
        button.addEventListener('click',function(){
            // 发送ajax - 要配置很多参数,所以参数是对象类型
            axios({
                method:'get',
                url:'http://www.liulongbin.top:3009/api/getbooks'
            }).then(res=>{
              // res里面有六个属性,未来几乎只用data属性
              console.log(res.data);
            });
        });
        // 
    </script>
</body>

2、get请求携带参数

<body>
    <script src="./lib/axios.js"></script>
    <script>
        // 发送请求,接收数据
        axios({
            method:'get',
            url:'http://www.liulongbin.top:3009/api/getbooks',
            // get请求可以传递 查询(query)参数,axios通过 params属性传递
            params:{
                id:2,
                bookname:'红楼梦'
            }
        }).then(res => {
            console.log(res.data);
        })
    </script>
</body>

查询参数的本质,就是把参数写到路径的最末尾! 用 ? 分割;

参数要求: 属性与值之间用 = 链接,多个属性之间用 & 链接; 路径中字符串不能带引号;

    axios({
            method:'get',
            url:'http://www.liulongbin.top:3009/api/getbooks?id=2&params=红楼梦',
        }).then(res => {
            console.log(res.data);
        })

3、编码和解码

 <script>
        // 网络传输中只允许传递 ASCII 码表中的数据,所以特殊符号和中文需要编码和解码

        // 1.编码 - encodeURICompoment
        let str1 = encodeURIComponent('百年孤独')
        console.log(str1);

        // 2.解码 - 三个%的编码代表一个汉字
        let str2 = decodeURIComponent('%E5%9D%A4')
        console.log(str2);
    </script>

4、post请求

<body>
    <script src="./lib/axios.js"></script>
    <script>
        // post请求都是需要携带参数的,通过 data 属性传递参数

        // axios发送post请求
        axios({
            method:'post',
            url:'http://www.liulongbin.top:3009/api/addbook',
            data:{
                bookname:'黑道风云三十年',
                author:'赵红兵',
                publisher:'黑龙江出版社'
            }
        }).then(({data:res}) => {
            console.log(res);
        });
    </script>
</body>

5、form标签的三个属性

     form 标签有三个属性:
        action="" 页面跳转: 相当于axios中的url (不写默认跳到当前页面)
        method="" 请求方式: 相当于axios中的method (不写默认get)
        entype="" 参数类型: 相当于axios中的请求头中的 content-type(设置请求体参数)

6、阻止表单默认提交

        // 给form表单绑定submit提交事件,并阻止表单默认提交
        const form = document.querySelector('form');
        // 绑定提交事件
         form.addEventListener('submit',function(e){
            // 阻止事件的默认行为
            e.preventDefault()
         })

7、axios的全局配置与简写

<body>
    <script src="./lib/axios.js"></script>
    <script>
        // axios中有一个全局配置,可以设置所有ajax的基础路径,但是只有配置之后才生效
        axios.defaults.baseURL = 'http://www.liulongbin.top:3009';

        // 1.简写get
        axios.get('/api/getbooks').then(({data:res}) =>{
            console.log(res);
        })
        // 2.简写post
        axios.post('/api/getbooks').then(({data:res}) =>{
            console.log(res);
        })
        // 3.完整写法
        axios({
            method:'get',
            url:'/api/getbooks'
        }).then(({data:res})=>{
            console.log(res);
        })
    </script>
</body>