Html第8集:AJAX Http请求、Get、Post、上传文件、表单

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/126528847
本文出自【赵彦军的博客】

AJAX 官网地址:https://www.w3schools.com/Js/js_ajax_http.asp

GET 网络请求

<script>

    const httpRequest = new XMLHttpRequest()
    httpRequest.onload = function () {
        //请求成功,404 会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-- " + code)
        console.log("yu-- " + responseText)
    }

    httpRequest.onerror = function () {
        //没有网,会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-error- " + code)
        console.log("yu-error- " + responseText)
    }

    httpRequest.open("GET", "https://api.github.com/users/zyj1609wz/repos", true)
    httpRequest.send()

</script>

日志如下:

在这里插入图片描述

网络请求拦截:

在这里插入图片描述

关键参数讲解

open(method: string, url: string | URL): void;
open(method: string, url: string | URL, async: boolean, username?: string | null, password?: string | null): void;
  • method : 请求方式,GET、POST
  • url :请求地址
  • async :异步请求

跨域问题

如果请求某个接口,出现跨域出错问题

在这里插入图片描述
可以在服务器测解决,下面用 srpingboot 举例

添加 @CrossOrigin 注解

@RestController
public class MyCro {

    @PostMapping("/getUser")
    @CrossOrigin(origins = "*")
    public void run(){

    }
}

post 请求

<script>

    const httpRequest = new XMLHttpRequest()

    httpRequest.onload = function () {
        //请求成功,404 会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-- " + code)
        console.log("yu-- " + responseText)
    }

    httpRequest.onerror = function () {
        //没有网,会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-error- " + code)
        console.log("yu-error- " + responseText)
    }

    httpRequest.open("POST", "http://localhost:8080/getUser", true)
    httpRequest.send()

</script>

效果如下:

在这里插入图片描述

添加header

添加 header 使用 setRequestHeader("key", "value")

但是需要注意的是,setRequestHeader("key", "value") 一定要在 open 方法之后执行,顺序不能错。

<script>

    const httpRequest = new XMLHttpRequest()

    httpRequest.onload = function () {
        //请求成功,404 会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-- " + code)
        console.log("yu-- " + responseText)
    }

    httpRequest.onerror = function () {
        //没有网,会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-error- " + code)
        console.log("yu-error- " + responseText)
    }

    httpRequest.open("POST", "http://localhost:8080/getUser", true)
    httpRequest.setRequestHeader("my_token", "666888")
    httpRequest.send()

</script>

效果如下:

在这里插入图片描述

POST 提交表单

<script>

    const httpRequest = new XMLHttpRequest()

    httpRequest.onload = function () {
        //请求成功,404 会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-- " + code)
        console.log("yu-- " + responseText)
    }

    httpRequest.onerror = function () {
        //没有网,会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-error- " + code)
        console.log("yu-error- " + responseText)
    }

    httpRequest.open("POST", "http://192.168.0.101:8080/getUser", true)
    httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    httpRequest.send("name=duduo&lname=120");

</script>

控制台看效果:

在这里插入图片描述

抓包看效果:

在这里插入图片描述

POST 发送 json

<script>

    const httpRequest = new XMLHttpRequest()

    httpRequest.onload = function () {
        //请求成功,404 会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-- " + code)
        console.log("yu-- " + responseText)
    }

    httpRequest.onerror = function () {
        //没有网,会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-error- " + code)
        console.log("yu-error- " + responseText)
    }

    httpRequest.open("POST", "http://192.168.0.101:8080/getUser", true)
    httpRequest.setRequestHeader("Content-type", "application/json");

    user = {"name": "zyj", "age": 102}
    httpRequest.send(JSON.stringify(user));

</script>

控制台如下:

在这里插入图片描述

post 发送字节数组

<script>

    const httpRequest = new XMLHttpRequest()

    httpRequest.onload = function () {
        //请求成功,404 会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-- " + code)
        console.log("yu-- " + responseText)
    }

    httpRequest.onerror = function () {
        //没有网,会回调
        const code = this.status
        const responseText = this.responseText
        console.log("yu-error- " + code)
        console.log("yu-error- " + responseText)
    }

    httpRequest.open("POST", "http://192.168.0.101:8080/getUser", true)
    httpRequest.setRequestHeader("Content-type", "application/json");

    //把字符串 转换成 二进制
    const content = "今天星期六"
    const utf8Encode = new TextEncoder();
    const byteArray = utf8Encode.encode(content);

    //发送二进制
    httpRequest.send(byteArray);

</script>

效果如下:

在这里插入图片描述

form 表单 上传 MultipartFile

<body>

<input type="file" id="my_file" name="file"/>
<button onclick="uploadFile()">上传</button>

<script>

    function uploadFile() {

        //创建MultipartFile
        const formData = new FormData();
        const file = document.getElementById("my_file").files[0]
        formData.append("file", file);

        console.log("file_name: " + file.name)

        const httpRequest = new XMLHttpRequest()

        httpRequest.onload = function () {
            //请求成功,404 会回调
            const code = this.status
            const responseText = this.responseText
            console.log("yu-- " + code)
            console.log("yu-- " + responseText)
        }

        httpRequest.onerror = function () {
            //没有网,会回调
            const code = this.status
            const responseText = this.responseText
            console.log("yu-error- " + code)
            console.log("yu-error- " + responseText)
        }

        httpRequest.open("POST", "http://192.168.0.101:8080/upload", true)

        //发送二进制
        httpRequest.send(formData);
    }

</script>

</body>

效果如下:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值