前端中的网络数据交互-ajax

目录

1.异步和同步任务

1.1同步

1.2异步

1.3总结

2.ajax技术

2.1简介

2.2ajax的优点

 2.3ajax处理请求格式

2.3.1 状态码:

2.3.2  响应码:


1.异步和同步任务

提到ajax首席就要说一下js的同步和异步任务

1.1同步:

同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就中断了。

1.2异步:

将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启动,你可以关闭浏览器了。然后程序再慢慢地去写入数据库去。这就是异步。但是用户没有卡死的感觉,会告诉你,你的请求系统已经响应了。你可以关闭界面了。

1.3总结

使用异步的场景:网络请求,本地内容读取,I/O读取、数据库操作 ---耗时操作

使用同步的场景:主线程

常见异步代码:setInterval setTimeout 所有的事件 ,ajax请求

详细介绍请参考js的线程

2.ajax技术

2.1简介

ajax (Asynchronous Javascript And XML)其实就是异步的javaScript和XML。

AJAX不是一门新语言,是综合HTTP异步通信 、JS、XML、以及JSON等多种网络技术的一种编程模型。

AJAX ~= JS+ xml+JSON + HTTP通信,本质就是在HTTP协议的基础上以异步的方式与服务器进行通信。

2.2ajax的优点

ajax别称 叫做无刷新技术 比如地图、局部加载 ​

1.页面局部刷新。在读取数据的过程中,用户所面对的不是白屏,而是原来页面的转台,或者正在更新的信息提示状态,只有当接收到全部数据后才更新相应部分的内容,而这种更新也是瞬间的用户几乎感觉不到

​2.可以充分利用客户端闲置的处理能力,减轻服务器和网路传输的负担 ​

3.使web中界面与应用相分离 也可以说是数据与呈现相分离

 2.3ajax处理请求格式

Ajax模块在处理网络请求的时候包括以下四个步骤

1.通过XMLHttpRequest类创建xhr对象 ​

2.为xhr对象添加属性与回调方法 ​

3.令xhr对象执行open()方法,指明请求被发往某处 ​

4.令xhr对象执行send()方法,发出请求。

 补充:Ajax可以发出同步请求,也可以发出异步请求。但大多数情况下指的是异步请求,因为同步的Ajax请求对浏览器会产生“阻塞效应”。

实现代码如下:

利用ajax发送GET请求

 <script>
        //1.创建一个xhr对象
        var xhr;
        if (window.XMLHttpRequest) { //普通浏览器
            xhr = new XMLHttpRequest()
        } else {  //老版本ie
            xhr = ActiveXObject("Microsoft.XMLHTTP")
        }
        //2.监听网络变化
        xhr.onreadystatechange = function () {

            console.log(xhr.readyState); //状态码
            console.log(xhr.status); //响应码

            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    console.log(xhr.responseText); //成功后输出获取的信息
                } else {
                    console.log(xhr);  //失败后输出xhr对象
                }
            }

        }

        //3.打开一个请求地址(建立连接)
        // xhr.open(请求方式,请求地址,是否异步) //第三个参数为true为异步请求
        //请求地址如果和当前页面在同一服务器中,可写成相对地址
        // xhr.open('GET', './02.php', true)

        xhr.open('GET', 'http://127.0.0.1:5001/app/02.php', true)
        
        // 4.发送请求
        xhr.send()


    </script>

如果是发送POST请求:在调用send方法之前要先设置请求头:参数拼接之后放在当做send的参数

设置请求头 对象:存储请求数据的信息:

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

 post请求的参数放在send中

var query='usern=' + names.value + "&score=" + score.value

xhr.send(query)

下面说一说状态码和响应码:

2.3.1 状态码:

 状态码:5个 (xhr.readyState)

                0 没有建立连接

                1 请求还没有发送,但是链接已建立

                2 发送请求,将header信息和后端状态码收到

                3 接受响应数据中

                4 ajax请求发送并且得到了服务器的响应

2.3.2  响应码:

响应码:5种 (xhr.status)

                1xx 信息类错误

                2xx 成功 200

                3xx 重定向 304

                4xx 客户端错误 404 not find

                5xx 服务端错误

一般只有当状态码为4而且响应码为2xx的时候表示ajax请求成功,服务端返回了数据。 

感谢浏览!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俗人844

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值