微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

学习JavaScript8AJAX请求方法

文章目录


前言

文章的ajax请求需要用到node创建的后端,一些ajax知识也可以参考
学习JavaScript(2)AJAX基础
学习JavaScript(7)node简易后端创建


请求方法

这里用的后端是前文创建的9000端口,需要配置说明可以参考前文
学习JavaScript(7)node简易后端创建

1、原生JavaScript

原生JavaScript需要以下几步重要操作,包括在绑定事件时对于readyState以及status的判断

1.创建对象
2.设置响应体数据类型
3.初始化 设置请求方法和url
4.发送
5.事件绑定 处理服务端返回结果

<!DOCTYPE html>
<html>
    <Meta charset="utf-8">
    <title>ajax 请求</title>
    <style>
        #result{
            width: 200px;
            height: 100px;
            border: solid 2px violet;
        }
    </style>
    <body>
        <button onclick=ajax()>发送请求</button>
        <div id="result"></div>

        <script>
            const res = document.getElementById("result");
            
            const ajax = () => {
                //1创建对象
                const xhr = new XMLHttpRequest();

                //设置响应体数据类型
                xhr.responseType="json";

                //2.初始化 设置请求方法和url
                xhr.open("GET","http://127.0.0.1:9000/json-server");

                //3.发送
                xhr.send();

                //4.事件绑定 处理服务端返回结果
                xhr.onreadystatechange = function(){

                    //判断 服务器状态
                    if(xhr.readyState ===4){

                        //判断响应状态码
                        if(xhr.status >= 200 && xhr.status <300){
                            console.log(xhr.response)
                            res.innerHTML = xhr.response.name;
                        }
                    }
                }                
            }
        </script>
    </body>
</html>

2、jQuery

代码使用script的cdn标签引入jQuery库

jQuery库可以使用$.get(), $.ajax(), $.ajax()方法
其中 $.ajax()比较常用,需要确定请求方法

<!DOCTYPE html>
<html>

<head>
    <Meta charset="utf-8">
    <title>ajax 请求</title>
    <style>
        #result {
            width: 200px;
            height: 100px;
            border: solid 2px violet;
        }
    </style>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
</head>

<body>
    <button onclick=ajax1()>发送请求get</button>
    <button onclick=ajax2()>发送请求post</button>
    <button onclick=ajax3()>发送请求ajax</button>

    <div id="result"></div>

    <script>
        const res = document.getElementById("result");
        const ajax1 = () => {
            //$.get用的是get方法
            $.get(
                "http://127.0.0.1:9000/json-server",
                { a: 200, b: 200 },
                (data) => {
                    console.log(data);
                    res.innerHTML = data.name;
                },
                "json"
            )
        }

        const ajax2 = () => {
            //$.post用的是post方法
            $.post(
                "http://127.0.0.1:9000/json-server",
                { a: 200, b: 200 },
                (data) => {
                    console.log(data);
                    res.innerHTML = data;
                },
                "json"
            )
        }

        const ajax3 = () => {
            $.ajax({
                url: "http://127.0.0.1:9000/json-server",
                data: { a: 200, b: 300 },
                type: "GET",
                dataType: "json",
                timeout: 2000,
                success: (data) => {
                    console.log(data);
                    res.innerHTML = data.age;
                },
            })
        }
    </script>
</body>

</html>

3、axios

代码使用script的cdn标签引入axios库

axios可以使用axios.get(), axios.ajax(), axios.ajax()方法
使用axios也是需要确定请求方法

<!DOCTYPE html>
<html>

<head>
    <Meta charset="utf-8">
    <title>ajax 请求</title>
    <style>
        #result {
            width: 200px;
            height: 100px;
            border: solid 2px violet;
        }
    </style>
    <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.0/axios.js"></script>
</head>

<body>
    <button onclick=ajax1()>发送请求get</button>
    <button onclick=ajax2()>发送请求post</button>
    <button onclick=ajax3()>发送请求ajax</button>

    <div id="result"></div>

    <script>
        const result = document.getElementById("result");

        //设置baseURL
        axios.defaults.baseURL = "http://127.0.0.1:9000"

        const ajax1 = () => {
            //使用axios.get方法
            axios.get("/json-server",
                { params: { vip: 200, pp: 100 } })

                .then(res => {
                    console.log(res);
                    result.innerHTML = res.data.name;
                })
                .catch(err => {
                    console.error(err);
                })
        }

        const ajax2 = () => {
            //使用axios.get方法
            axios.post("/json-server", {
                params: { vip: 200, pp: 100 },
                headers: { a: 1, b: 2 }
            })

                .then(res => {
                    console.log(res);
                    result.innerHTML = res.data.color;
                })
                .catch(err => {
                    console.error(err);
                })
        }

        const ajax3 = () => {
            //使用axios方法
            axios({
                method: 'post',
                url: "/json-server",
            })

                .then(res => {
                    console.log(res);
                    result.innerHTML = res.data;
                })
                .catch(err => {
                    console.error(err);
                })
        }
    </script>
</body>

</html>

4、fetch()

fetch是原生js封装了XMLHttpRequest()的方法

一些语法上基于promise实现

<!DOCTYPE html>
<html>

<head>
    <Meta charset="utf-8">
    <title>ajax fetch 请求</title>
    <style>
        #result {
            width: 200px;
            height: 100px;
            border: solid 2px violet;
        }
    </style>
</head>

<body>

    <button onclick=ajax()>发送请求ajax</button>

    <div id="result"></div>

    <script>
        const result = document.getElementById("result");

        const ajax = () => {
            fetch(
                "http://127.0.0.1:9000/json-server?vip=200&&dd=100", {
                method: "POST",
                headers: {
                    cc: 200,
                    bb: 900
                },
                body: "name=chocolate&age=22"
            })

                //一个promise的链式语法接收json信息并进行引用
                .then(
                    res => {
                        console.log(res);
                        return res.json();
                    }
                ).then(
                    res => {
                        console.log(res);
                        result.innerHTML = res.name;
                    }
                )
        }

    </script>
</body>

</html>

总结

个人学习笔记,每天进步多一点

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐