ajax中的onload和readychange区别

先补个知识点:

readyState 状态码:

0:请求未初始化

1:服务器连接已建立

2:请求已接受

3:请求处理中

4:请求已完成,且响应已就绪

HTTP 状态码:

200 - 服务器成功返回网页

404 - 请求的网页不存在

503 - 服务器暂时不可用

首先在自己目录下建立一个ajaxText.txt用来测试,ajax必须要服务器里面执行,我当前是在apach本地服务器测试的。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
<button id="btn" value="请求数据">请求数据</button>
<p id="c"></p>
<body>
        <!-- open(type, url/file,async) -->
        <script type="text/javascript">

            let btnRequest = document.getElementById(‘btn‘);
            btnRequest.addEventListener(‘click‘, load, false);

            function load() {
            let xhr = new XMLHttpRequest();
            xhr.open(‘GET‘, ‘ajaxTest.txt‘,true);
            //两种方式请求 onload / onreadystatechange

            xhr.onload = function(){
                console.log(`onload 状态码${xhr.readyState}`);
                console.log(`这是onload函数请求的文本:${this.responseText}`);
            }
            //当state状态发生改变时回调一次后面的匿名函数
            xhr.onreadystatechange = function(){
                console.log(`onreadystatechange 状态码${xhr.readyState}`);
                console.log(`这是onreadychange函数请求的文本:${this.responseText}`);
            }
            xhr.send();
            }
        </script>
    </body>
</html>

console:

onreadystatechange()的定义是只要返回的状态码只要变化时就回调一次函数,而onload只有状态码为4时才能回调一次函数。

这边提下onprogress(),也就是当状态码为3时,会执行这个函数。

当服务器正常的话基本上都会返回readyState 状态码0~4,但是不一定请求得到数据,所以有个http状态码来判断。

            xhr.onreadystatechange = function(){
                if (xhr.readyState == 4 && xhr.status == 200)
                {
                    console.log(`请求成功并返回数据${this.responseText}`);
                }
            }

在onload()里面也是一样,这里的逻辑根据情况来写。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
<button id="btn">请求数据</button>
<p id="c"></p>
<body>
        <!-- open(type, url/file,async) -->
        <script type="text/javascript">

            let btnRequest = document.getElementById(‘btn‘);
            btnRequest.addEventListener(‘click‘, load, false);

            function load() {
            let xhr = new XMLHttpRequest();
            xhr.open(‘GET‘, ‘ajaxTest.txt‘,true);
            //两种方式请求 onload / onreadystatechange

//            xhr.onload = function(){
//                if (xhr.status == 200)
//                {
//                    console.log(`请求成功并返回数据${this.responseText}`);
//                }
//                else{
//                    console.log(`请求不成功`);
//                }
////                console.log(`onload 状态码${xhr.readyState}`);
////                console.log(`这是onload函数请求的文本:${this.responseText}`);
//            }
            //当state状态发生改变时回调一次后面的匿名函数
            xhr.onreadystatechange = function(){
                if (xhr.readyState == 4 && xhr.status == 200)
                {
                    let p = document.createElement("p");
                    p.innerHTML = this.responseText;
                    document.body.appendChild(p);
                    console.log(`请求成功并返回数据${this.responseText}`);
                }
            }
            xhr.send();
            }
        </script>
    </body>
</html>

原文地址:https://www.cnblogs.com/doudoublog/p/8608360.html

时间: 2024-10-10 19:32:31

ajax中的onload和readychange区别的相关文章

Ajax中GET和POST的区别

Get方式: 用get方式可传送简单数据,但大小一般限制在1KB下,数据追加到url中发送(http的header传送),也就是说,浏览器将各个表单字段元素及其数据按照URL参数的格式附加在请求行中的资源路径后面.另外最重要的一点是,它会被客户端的浏览器缓存起来,那么,别人就可以从浏览器的历史记录中,读取到此客户的数据,比如帐号和密码等.因此,在某些情况下,get方法会带来严重的安全性问题. Post方式: 当使用POST方式时,浏览器把各表单字段元素及其数据作为HTTP消息的实体内容发送给We

AJAX中post和get的区别

Get方式:1.用get方式可传送简单数据,但大小一般限制在1KB下, 2.数据追加到url中发送 (http的header传送),即浏览器将各个表单字段元素及其数据按照URL参数的格式附加在请求行中的资源路径后面. 3.它会被客户端的浏览器缓存起来,那么,别人就可以从浏览器的历史记录中,读取到此客户的数据,比如帐号和密码等.因此,在某些情况下,get方法会带来严 重的安全性问题. Post方式:1.当使用POST方式时,浏览器把各表单字段元素及其数据作为HTTP消息的实体内容发送给Web服务器

Jquery的Ajax中contentType和dataType的区别

上代码 $.ajax({ type: httpMethod, cache:false, async:false, contentType: "application/json; charset=utf-8", dataType: "json",//返回值类型 url: path+url, data:jsonData, success: function(data){ var resultData = '返回码='+data.status+',响应结果='+data.

前端ajax中运用post请求和get请求之于session验证

首先我们来看下ajax两种请求的区别: Ajax中POST和GET的区别Get和Post都是向服务器发送的一种请求,只是发送机制不同. 1. GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器.当然在Ajax请求中,这种区别对用户是不可见的. 2. 首先是"GET方式提交的数据最多只能是1024字节",因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了.而实际上,URL不存在参数上限的问题,HTTP协

jquery中的$(document).ready()、JavaScript中的window.onload()以及body中的onload()的区别

  body中的onload()和window.onload以及$(document).ready()的区别: 1.前两者都表示当页面加载元素(包括图片等信息)完毕后执行的操作,而且两者在各种浏览器中都兼容,而$(document).ready()表示的是JQuery中的一个方法因而只有在支持jQuery的浏览器中才适用,同时该方法是在当页面的dom节点加载完毕后就执行,无需等待页面中的图片等加载完成. 2.当代码中同时存在body中的onload()和window.onload()要注意的 :

JS中的onload与jQuery中的ready区别

jQuery的执行机制(onload与ready的区别) 结论得出前自行测试: 为了测试是否真如所说的那样,所以在页面插入了20000张照片,照片数量少得不出什么结论,所以改用console.log()来测试,这样一来我可以很好的看出在页面最底端有没有都加载出来,还有是打印出的结果的事件顺序. 所用到的JS代码是: console.time('name'); window.onload = function() { console.log('onload2'); console.timeEnd(

AJAX中同步和异步的区别和使用场景

在Jquery中ajax方法中async用于控制同步和异步,当async值为true时是异步请求,当async值为fase时是同步请求.ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据. jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才

ajax中的async属性值之同步和异步及同步和异步区别

在Jquery中ajax方法中async用于控制同步和异步,当async值为true时是异步请求,当async值为fase时是同步请求.ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据. jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才

Ajax 两种请求方式的区别onload和onreadystatechange

一. onreadystatechange 1. XMLHttpRequest对象有一个属性readyState,将其(xhr.readyState)打印后发现.进入onreadystatechange请求方式中时,可以打印其状态为2,状态为3,状态为4. <button id="btn">请求纯文本</button> <script> let btn = document.getElementById('btn'); btn.addEventLis