Ajax 跨域认识

本文深入探讨了Ajax的基础,包括XMLHttpRequest的使用、JSON数据交换格式,以及同源策略和跨域问题。重点讲解了CORS和JSONP两种跨域解决方案,并介绍了防抖和节流的概念及其应用场景。
摘要由CSDN通过智能技术生成

Ajax XMLHttpRequest & 跨域

一.XMLHttpRequest:

  • XMLHttpRequest是浏览器内置的一个构造函数

  • 作用:基于 new 出来的 XMLHttpRequest 实例对象,可以发起 Ajax 的请求。 axios 中的 axios.get()、axios.post()axios() 方法,都是基于 XMLHttpRequest(简称:XHR) 封装出来的!

1.使用 XMLHttpRequest 发起 GET 请求:

主要的 4 个实现步骤:

  • 创建 xhr 对象

  • 调用 xhr.open() 函数

  • 调用 xhr.send() 函数

  • 监听 load 事件

        <script>
            let xhr = new XMLHttpRequest();
            xhr.open('GET', 'http://xxx.com/api/xx');
            xhr.send();
            xhr.addEventListener('load', function () {
           
                console.log(this.response);
            })
        </script>
    复制代码
    
2.请求时携带URL参数 或 提交请求体 :
  • URL参数,只能拼接URL 地址 后面
  • 请求体,放到 send() 里面
    <script>
        let xhr = new XMLHttpRequest();
        // 将请求参数拼接到url后面
        xhr.open('请求方式', 'http://www.itcbc.com/api/xx?id=1&username=zhangsan');
        xhr.send(请求体);

        xhr.addEventListener('load', function () {
     
            console.log(this.response);
        })
    </script>
复制代码
3.提交请求体数据,需指定Content-Type头:
  • 当需要提交请求体数据时,需要在 xhr.open() 之后,调用 xhr.setRequestHeader() 函数,指定请求体的编码格式
    <script>
        let xhr = new XMLHttpRequest();

        // 将请求参数拼接到url后面
        xhr.open('POST', 'http://www.itcbc.com/api/post');
        // 根据请求体格式的不同,需设置对应的Content-Type头
        xhr.setRequestHeader('Content-Type', '值')
        xhr.send('username=zs&age=20');

        xhr.addEventListener('load', function () {
     
            console.log(this.response);
        })
    </script>
复制代码
4.请求体格式 和 对应的Content-Type值:

为了方便服务器接收数据,当提交请求体时,需要指定一个叫做Content-Type的请求头

1.请求体格式 -> Content-Type -> 是否需要在代码中指定

① 参数=值&参数=值 -> application/x-www-form-urlencoded -> 是

② ‘{ “id”: 1, “name”: “zs” }’ -> application/json -> 是

③ new FormData() -> multipart/form-data; xxxxxxxxx随机字符-> 否,浏览器自 动设置

  • 例:xhr.setRequestHeader(‘Content-type’, ‘application/x-www-form-urlencoded’)

2.使用axios就不用关心这个请求头了,因为axios已经帮我们处理好了加请求头这件事,不过写原生代码,就需要自己指定

二.数据交换格式:

数据交换格式,就是服务器端客户端之间数据传输的格式

两种数据交换格式:

  • XML(很少用)
  • JSON(主流)
1.什么是 JSON:
  • JSON(全称:JavaScript Object
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值