ajax第二篇

ajax对象XMLHttpRequest详细解析

文章简述:
    这篇文章主要借助一个简单的程序对ajax对象进行详细的分析。
    主要知识点有如下部分:
    1.如何创建一个ajax对象(解决兼容性问题);
    2.open方法的各个参数的主要作用,包括get,post的区别,异步与同步的区别;
    3.ajax的onreadystatechange方法的详细的解析。

第一部分 从一个简单的程序说起

    该程序的主要功能是从服务器中获取一些数据展示在页面上。
源码
ajax2.html
<!DOCTYPE html>
        <html>
            <head>
                <meta charset="UTF-8">
                <title>ajax第二篇</title>
                <script>
                    window.onload=function(){
                        var obtn=document.getElementById('btn');
                        obtn.onclick=function(){
                            var xhr=null;
                            //创建ajax的对象
                            if(window.XMLHttpRequest){
                                xhr=new XMLHttpRequest();
                            }else{
                                xhr=new ActiveXObject('Microsoft.XMLHTTP');
                            }
                            //调用ajax的open方法
                            xhr.open('get','1.php?username='+encodeURI("张三")+'&age='+encodeURI("30"),true);
                            //提交
                            xhr.send();

                            //等待服务器返回数据
                            xhr.onreadystatechange=function(){
                                //readyState是指ajax的工作状态
                                if(xhr.readyState==4){
                                    //status指的是服务器的状态
                                    if(xhr.status==200){
                                        //JSON.parse是将json数据进行解析成相应的数据
                                        var data = JSON.parse(xhr.responseText);
                                        var username = data[0];
                                        var age= data[1];
                                        alert("用户名是:"+ username +",年龄是:"+age);
                                    }else{
                                        alert('出错了,错误是:'+xhr.status);
                                    }
                                }
                            }
                        }
                    }
                </script>
            </head>
            <body>
                <input type="button" id="btn" value="按钮"/>
            </body>
        </html>
1.php
<?php
            header('content-type:text/html;charset="utf-8"');

            $username = $_GET['username'];
            $age = $_GET['age'];

            $arr1 = array($username,$age);
            //对变量进行 JSON 编码
            echo json_encode($arr1);

程序截图

第二部分 分析XMLHttpRequest对象。

    ajax的执行流程:  
        1.创建一个XMLHttpRequest对象。
        2.调用open的方法,设置数据请求的方式,数据请求的地址,是否是异步。
        3.调用send的方法,提交参数。
        4.等待获取服务器的数据。
1.创建一个XMLHttpRequest对象
var xhr=null;
    //创建ajax的对象
    if(window.XMLHttpRequest){
        xhr=new XMLHttpRequest();
    }else{
        xhr=new ActiveXObject('Microsoft.XMLHTTP');
    }

代码解析:上诉代码主要是处理浏览器的兼容性问题,首先判断在浏览器中是否存在XMLHttpRequest对象(一般都有,除了ie7以下版本)。如果存在就直接创建;如果没有就使用ActiveXObject插件中创建(Microsoft.XMLHTTP),创建一个ajax的对象。

2.调用open的方法,设置数据请求的方式,数据请求的地址,是否是异步。
open()方法有三个参数,分别如下:
    1.数据的请求方式:如get,post。
    2.数据请求的地址:如1.php。
    3.是否是异步:true--->异步;false--->同步。

1.get,post的区别
    在传输方式上:GET方式通过url地址传输;POST通过浏览器的头部信息中传输。
    传输数据量:GET有数据量的限制;POST在理论上是无限的。
2.异步与同步的区别
    异步:当ajax发送请求后,在等待服务器返回的这个过程中,前台会继续执行ajax块后面的脚本。
    同步:当ajax发送请求后,在等待服务器返回的这个过程中,前台不会继续执行ajax块后面的脚本。
3.调用send方法,向服务器提交参数。
    注:如果数据请求方式是以post方式提交,那么提交的参数就写在send方法的参数中;
        如:send("username=张三&password=111");
4.onreadystatechange事件
    该事件主要用于对请求状态进行监控的。每当ajax的工作状态发生改变时,该事件就会被触发。

    readystate:ajax的工作状态。
        0:未初始化,还没有执行open方法。
        1:载入,已经调用了send方法,正在发送请求。
        2:载入完成,send方法已经执行完了,收到从服务器端返回的全部数据。
        3:解析,正在解析从服务器返回的数据。
        4:解析完成,响应的内容已经准备好了,可以在浏览器中展示。

    responseText:ajax请求数据返回内容的存放容器。(主要是以文本的形式)。

    status:服务器的响应状态码。(由三位阿拉伯数字组成)
        1xx:关于消息的状态码。
        2xx:关于成功的状态码。
        3xx:关于重定向的状态码。
        4xx:关于浏览器错误(请求出错)的状态码。
        5xx:关于服务器出错的状态码。    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值