关于ajax中的onreadystatechange

先铺垫一下知识:

readystate 属性存有 XMLHttpRequest 的状态信息,也就是代表着请求数据的过程,是由0~4代表,具体见(onreadystatechange

status:跟readystate一起变化的属性,200表示成功,404表示未找到页面,还有很多其他的值表示不同的问题

只要readystate变化,就会触发onreadystatechange方法

我们先看一个例子:

<html>

<head>

    <script type="text/javascript">  
        function loadXMLDOC(url,cfunc) {
            if (window.XMLHttpRequest) {
                xmlhttp = new XMLHttpRequest();
            }
            else {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=cfunc;
            xmlhttp.open("GET",url,true);
            xmlhttp.send();
        }
        function parseXML() {
           loadXMLDOC("demo.txt",function(){
               console.log(xmlhttp.status);
               if(xmlhttp.readyState==4&&xmlhttp.status==0){
                xmlDoc = xmlhttp.responseText;
                console.log(xmlDoc);
                document.getElementsByTagName("div")[0].innerHTML=xmlDoc;
               }
           });
        }  
    </script>
</head>

<body onload="parseXML()">
    <h1>W3School.com.cn Internal Note</h1>
    <div style="width: 100px;height: 100px;"></div>
    <button type="button" onclick="parseXML()">la</button>
</body>

</html>

所以我们这个例子中的onreadystatechange需要赋值一个函数,为什么我们的判断语句里面是写着status==0而不是200呢,因为:

如果在本地运行(如:C:\\ajax\\ helloworld.htm),那么status属性不管是在”成功”还是”页面未找到”的情况下,都返回的是0。
也就是说没有通过Web服务器形式的Ajax请求返回值都是0;

也就是我们的demo.txt是本地文件,ajax请求根本就没有通过服务器,所以status的值只能是0

并且我们在这个例子中封装了一个loadeXMLDOC方法,里面的参数可以更好的实现ajax请求

AJAX (Asynchronous JavaScript and XML) 是一种在网页进行异步数据交互的技术。当使用 AJAX 发送请求并接收到响应时,我们可以利用 `onload` 事件来处理返回的数据。 `onload` 是一个事件处理函数,它在 AJAX 请求成功完成并且返回数据时触发。我们可以通过指定一个函数来处理这个事件,以便在数据加载完成后执行相应的操作。 以下是一个简单的示例代码,展示了如何使用 `onload` 处理 AJAX 请求的返回数据: ```javascript // 创建 XMLHttpRequest 对象 var xhr = new XMLHttpRequest(); // 监听 onload 事件 xhr.onload = function() { if (xhr.status >= 200 && xhr.status < 400) { // 请求成功 var response = xhr.responseText; // 获取返回的数据 // 执行相应的操作,比如更新页面内容 console.log(response); } else { // 请求失败 console.error('请求失败!'); } }; // 发送 AJAX 请求 xhr.open('GET', 'example.com/data', true); xhr.send(); ``` 在上面的示例,我们创建了一个 `XMLHttpRequest` 对象并指定了 `onload` 事件处理函数。当 AJAX 请求成功返回时,`onload` 函数会被触发,我们可以在其获取返回的数据并执行相应的操作。请注意,我们需要使用 `open` 方法指定请求的方法、URL 和是否异步发送请求,并使用 `send` 方法发送请求。 这只是一个简单的示例,实际使用可能需要根据具体需求进行更多的处理和错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值