ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

学习JavaScript(8)AJAX请求方法

2020-12-01 14:59:08  阅读:159  来源: 互联网

标签:axios const 请求 res JavaScript AJAX json ajax result


文章目录


前言

文章的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>

总结

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

标签:axios,const,请求,res,JavaScript,AJAX,json,ajax,result
来源: https://blog.csdn.net/Echianer/article/details/110424917

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有