Vue系列-02-axios





vue.js和aixos.js

# https://blog-static.cnblogs.com/files/lichengguo/vue.js
# 下载该文件,保存的路径为代码同级目录 js/vue.js 文件

# https://blog-static.cnblogs.com/files/lichengguo/axios.js
# 下载该文件,保存的路径为代码同级目录 js/axios.js 文件



js操作json数据

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <script>
        // json语法
        let human = {
            "username": "tom",
            "password": "1234567",
            "age": 20,
        };

        console.log(human);
        console.log(human["username"])
        console.log(human.age)
        console.log(typeof human);
        console.log("--------------------")

        // JSON对象提供对json格式数据的转换功能
        // stringify(json对象)  # 用于把json转换成字符串
        let result = JSON.stringify(human);
        console.log(result); // {"username":"tom","password":"1234567","age":20}
        console.log(typeof result); // string

        // parse(字符串类型的json数据)  # 用于把字符串转成json对象
        let json_str = ‘{"password":"1123","age":20,"name":"jerry"}‘;
        console.log(json_str); // {"password":"1123","age":20,"name":"jerry"}
        console.log(typeof json_str); // string

        let json_obj = JSON.parse(json_str);
        console.log(json_obj);
        console.log(typeof json_obj); // object

        console.log(json_obj.age) // 20
    </script>
</body>

</html>




axios的介绍

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.js"></script>
</head>

<body>
    <script>
        /* 
        vue.js默认没有提供ajax功能的
        所以使用vue的时候,一般都会使用axios的插件来实现ajax与后端服务器的数据交互
        注意,axios本质上就是javascript的ajax封装,所以会被同源策略限制
        下载地址:
        https://unpkg.com/axios@0.18.0/dist/axios.js 
        https://unpkg.com/axios@0.18.0/dist/axios.min.js
        
        增 post
        删 delete
        改 put
        查 get
        axios提供发送请求的常用方法有两个:axios.get() 和 axios.post()

        发送get请求
        参数1:必填,字符串,请求的数据接口的url地址,例如请求地址:http://www.baidu.com?id=200
        参数2:可选,json对象,要提供给数据接口的参数
        参数3:可选,json对象,请求头信息
        axios.get(‘服务器的资源地址 参数1‘,{
            params:{
                // 参数2
                参数名:‘参数值‘,
            }

        },{
            // 参数3
            responseData: "json",
            
        }).then(function (response) {
            console.log("请求成功");
            console.log(response);

        }).catch(function (error) { 
            console.log("请求失败");
            console.log(error.response);
        });

        发送post请求
        参数和使用和axios.get()一样
        参数1: 必填,字符串,请求的数据接口的url地址
        参数2:必填,json对象,要提供给数据接口的参数,如果没有参数,则必须使用{}
        参数3:可选,json对象,请求头信息
        axios.post(‘服务器的资源地址 参数1‘, {
            // 参数2
            username: ‘tom‘,
            password: ‘123456‘
        },{
            // 参数3
            responseData: "json",
        })
        .then(function (response) {
            console.log(response);
        })
        .catch(function (error) {
            console.log(error);
        });
        */
    </script>
</body>

</html>




axios的get请求

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.js"></script>
</head>

<body>
    <div id="app">
        <input type="text" v-model="city">
        <button @click="get_weather">点击获取天气</button>
    </div>

    <script>
        let vm = new Vue({
            el: "#app",
            data: {
                city: "",
            },
            methods: {
                get_weather() {
                    if (this.city == "") {
                        alert("请输入城市名称")
                        return false
                    }

                    // http://wthrcdn.etouch.cn/weather_mini?city=城市名称
                    axios.get("http://wthrcdn.etouch.cn/weather_mini", {
                        params: {
                            city: this.city,
                        }

                    }).then(response => {
                        console.log(typeof response)
                        console.log(response);

                    }).catch(error => {
                        console.log(error.response)
                    });
                },
            },
        })
    </script>
</body>

</html>



axios的post请求

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.js"></script>
</head>

<body>
    <div id="app">
        <button @click="login">登录</button>
    </div>

    <script>
        let vm = new Vue({
            el: "#app",
            data: {
                city: "",
            },
            methods: {
                // 登录
                login(){
                    axios.post("http://127.0.0.1:8080/login/", {
                        username: "tom",
                        password: "123",
                    }).then(function (res) {
                        console.log(res);
                        console.log(res.data);
                    }).catch(function (err) {
                        console.log(err);
                    })
                },
                
                //
            },
        })
    </script>
</body>

</html>

axios的post请求服务端

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

type userInfo struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

func login(w http.ResponseWriter, r *http.Request) {
	var u userInfo

	defer r.Body.Close() //关闭连接

	// 解决跨域
	w.Header().Set("Access-Control-Allow-Origin", "*")             // 允许访问所有域
	w.Header().Add("Access-Control-Allow-Headers", "Content-Type") // header的类型

	if r.Method == "POST" {
		// 获取客户端传过来的json数据
		b, err := ioutil.ReadAll(r.Body)
		if err != nil {
			fmt.Println("读取数据报错了哦", err)
			return
		}

		// 通过内置的json包转换成对应的结构体
		_ = json.Unmarshal(b, &u)

		//
		if u.Username == "tom" && u.Password == "123" {
			//返回数据给客户端
			w.Write([]byte("登录成功"))
		} else {
			w.Write([]byte("登录失败"))
		}
	}
}

func main() {
	http.HandleFunc("/login/", login)
	http.ListenAndServe("0.0.0.0:8080", nil)
}


Vue系列-02-axios

上一篇:PS为照片后期处理调出“高级灰”的详细步骤


下一篇:javascript中的call()和apply()的用法和区别: