ajax第二篇

本文通过一个简单示例深入解析了Ajax与XMLHttpRequest的工作原理,包括创建Ajax对象、open方法的使用、GET与POST的区别、异步与同步的运作方式及onreadystatechange事件的详细解释。

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:关于服务器出错的状态码。    
Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值