DOM编程-表单验证

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>表单验证</title>
        <style type="text/css">
            /* 为span标签设置样式 */
            span{
                color: red;            /* 字体红色 */
                font-size: 12px;    /* 字号12px */
            }
            div{
                position: absolute;        /* div绝对定位    与下面2行代码共同起作用 */
                top: 10px;                     /* 距离页面顶部10px */
                left: 40%;                      /* 距离页面左侧40% */
            }

        </style>
    </head>
    <body>
        <script type="text/javascript">
            /*
                1、用户名不能为空
                2、用户名必须在6-14位之间
                3、用户名只能由数字和字母组成,不能含有其他符合。(正则表达式)
                4、密码和确认密码一致,邮箱地址合法
                5、统一失去焦点验证
                6、错误提示信息统一在span标签中提示,并且要求字体红色,字号12号
                7、文本框再次获得焦点后清空错误提示信息,如果文本框中的数据不合法要求清空文本框的value
                8、最终表单中所有项均合法方可提交
            */
            /*
                1、后期可以继续完善,比如密码不能为空,密码强度分为弱、中、强等等。

                2、注意代码编写过程中变量的声明位置            

            */
            // 页面加载完成之后执行
            window.onload =function(){
                // 获取用户名对象
                var usernameEmt = document.getElementById("username");
                // 获取用户名错误信息提示对象
                var span1Emt = document.getElementById("span1");
                
                
                // 绑定用户名失去焦点事件blur
                usernameEmt.onblur = function(){
                    // 获取用户名文本框中的value
                    var username = usernameEmt.value
                    // 去除用户名前后空白
                    username = username.trim();
                    // 创建用户名文本框的正则表达式对象(这里面已经包含了不为空和长度要求)
                    var usernameRegEpx = /^[A-Za-z0-9]{6,14}$/;
                    // 调用正则表达式的test()方法验证输入的用户名是否合法
                    var usernameOk = usernameRegEpx.test(username);
                    if(usernameOk){
                        span1Emt.innerHTML = ""
                    }else{
                        span1Emt.innerHTML = "用户名不合法"
                    }    
                }
                // 用户名文本框绑定获得焦点事件
                usernameEmt.onfocus = function(){
                    // 清空非法的value
                    // 如果用户名后面的错误提示信息不为空(有内容)就是非法的value,就需要清空用户名
                    if(span1Emt.innerHTML != ""){
                        usernameEmt.value = ""
                    }
                    // 清空提示信息(注意这行代码不能写到"清空非法的value"的前面)
                    span1Emt.innerText = "";
                }
                
                // 获取确认密码错误提示标签对象
                var span3Emt = document.getElementById("span3");
                // 获取确认密码框对象
                var pwd2Emt = document.getElementById("password2");
                // 获取密码框对象
                var pwd1Emt = document.getElementById("password1");
                // 绑定确认密码失去焦点事件
                pwd2Emt.onblur = function(){
                    // 获取确认密码和密码
                    var pwd2 = pwd2Emt.value;
                    var pwd1 = pwd1Emt.value;
                    if(pwd2 != pwd1){
                        // 在span3处提示错误信息
                        span3Emt.innerHTML = "密码信息不一致"
                    }
                }
                // 绑定确认密码获得焦点事件focus
                pwd2Emt.onfocus = function(){
                    // 如果确认密码的提示信息不等于空
                    if(span3Emt.innerHTML != ""){
                        // 清空错误的确认密码信息
                        pwd2Emt.value = "";
                    }
                    // 清空确认密码的错误提示信息
                    span3Emt.innerHTML = "";
                }
                
                // 获取邮箱地址框对象
                var emailEmt = document.getElementById("email");
                // 获取邮箱地址错误信息提示标签对象
                var span4Emt = document.getElementById("span4");
                // 绑定邮箱地址失去焦点事件blur
                emailEmt.onblur = function(){
                    // 获取邮箱地址字符串
                    var email = emailEmt.value;
                    // 创建邮箱地址正则表达式对象
                    var emailRegEpx = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                    // 调用正则表达式对象的test()方法
                    var emailOk = emailRegEpx.test(email);
                    if(emailOk){
                        span4Emt.innerHTML = "";
                    }else{
                        // 在邮箱地址错误提示信息处发出错误提示信息
                        span4Emt.innerHTML = "邮箱地址不合法";
                    }
                }
                // 绑定邮箱地址获得焦点事件focus
                emailEmt.onfocus = function(){
                    // 如果邮箱地址提示信息不为空
                    // 下行代码.innerHTML和.innerText都可以,但是不可以.value
                    if(span4Emt.innerText != ""){
                        // 清空邮箱地址
                        emailEmt.value = "";
                    }
                    // 清空邮箱地址错误提示信息
                    span4Emt.innerHTML = "";
                }
                
                // 给提交按钮绑定鼠标单击事件click
                document.getElementById("btn").onclick = function(){
                    // 需要触发用户名和密码确认以及邮箱地址的blur事件
                    // 不需要人工手动操作,使用代码触发。先focus、再blur。

                    usernameEmt.focus();//用户名对象获得焦点事件
                    usernameEmt.blur();//用户名对象失去焦点事件
                    
                    pwd2Emt.focus();//确认密码对象获得焦点事件
                    pwd2Emt.blur();//确认密码对象失去焦点事件
                    
                    emailEmt.focus();//邮箱地址对象获得焦点事件
                    emailEmt.blur();//邮箱地址失去焦点事件
                    
                    // 当所有表单项都合法的时候,提交表单
                    if(span1Emt.innerHTML == "" && span3Emt.innerHTML == "" && span4Emt.innerHTML == ""){
                        // 提交表单
                        document.getElementById("form").submit();
                    }
                }
            }
        </script>
        <div>
        <!--这个表单提交应该使用post,因为有密码,而我们为了检测从而使用get。-->
            <form action="http://localhost:8080/jd/save" method="get" id="form">
                <table>
                    <tr>
                        <td>用&nbsp;&nbsp;户&nbsp;&nbsp;名</td>
                        <td><input type="text" name="username" id="username"/></td>
                        <td><span id="span1"></span></td>
                    </tr>
                    <tr>
                        <td>密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码</td>
                        <td><input type="text" name="password" id="password1"/></td>
                        <td><span id="span2"></span></td>
                    </tr>    
                    <tr>
                        <td>确认密码</td>
                        <td><input type="text" id="password2"/></td>
                        <td><span id="span3"></span></center></td>
                    </tr>    
                    <tr>
                        <td>邮箱地址</td>
                        <td><input type="text" name="email" id="email"/></td>
                        <td><span id="span4"></span></td>
                    </tr>
                    <tr>
                        <td><input type="reset" value="重置"/></td>
                        <td><input type="button" value="注册" id="btn"/></td><!--把这里的submit改成button-->
                        <td></td>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
译者序 作者简介 前言 第1章 XML简介 1 1.1 标记语言 1 1.2 XML的起源和目的 2 1.3 Web体系结构:过去与未来 4 1.3.1 传统Web体系结构 4 1.3.2 XML下的Web体系结构 5 1.4 XML基本特征 6 1.5 词汇表 8 1.5.1 科学词汇表 8 1.5.2 商业词汇表 9 1.5.3 法律词汇表 10 1.5.4 医学词汇表 11 1.5.5 计算机词汇表 11 1.6 XML技术的主要特性 12 1.6.1 格式正规的XML 12 1.6.2 文档类型定义 13 1.6.3 数据建模 14 1.6.4 文档对象模型 14 1.6.5 XML 简单API 14 1.6.6 命名空间和模式 14 1.6.7 链接和查询 15 1.6.8 转换XML 15 1.6.9 XML和数据库 16 1.6.10 服务器到服务器 16 1.6.11 电子商务与XML 17 1.6.12 使用样式 18 1.6.13 无线应用协议和WML 18 1.7 XML的应用程序举例 19 1.8 小结 19 第2章 XML语法 20 2.1 标记语法 20 2.1.1 字符 20 2.1.2 命名 21 2.2 文档部分 22 2.3 元素 23 2.3.1 起始标记 24 2.3.2 结束标记 24 2.3.3 空元素标记 24 2.3.4 标记:一个简单的例子 25 2.3.5 文档元素 25 2.3.6 子元素 26 2.3.7 元素嵌套 27 2.3.8 字符串 29 2.4 字符数据 29 2.5 属性 30 2.5.1 特殊属性 31 2.5.2 空白 33 2.5.3 行尾的处理 34 2.6 字符引用和实体引用 34 2.6.1 字符引用 34 2.6.2 实体引用 34 2.7 处理指令 35 2.8 注释 36 2.9 CDATA部分 37 2.10 文档结构 38 2.10.1 序言 38 2.10.2 尾声 43 2.11 XML语法小结 43 2.12 格式正规的文档 44 2.13 解析器 45 2.13.1 事件驱动的解析器 45 2.13.2 基于树的解析器 46 2.13.3 解析器基准测试 46 2.14 书籍目录应用程序 47 2.15 小结 49 第3章 文档类型定义 51 3.1 为何需要正式的结构 51 3.1.1 文档域 52 3.1.2 验证文档的有效性 52 3.2 编写DTD:通用原则 52 3.2.1 将DTD与XML文档相关联 53 3.2.2 基本标记声明 55 3.3 正式的DTD结构 55 3.3.1 实体 56 3.3.2 元素 58 3.3.3 属性 61 3.3.4 条件部分 67 3.4 DTD的缺点 69 3.5 用于图书目录问题的DTD 70 3.5.1 图书目录问题的正式定义 70 3.5.2 对象关系问题 77 3.5.3 进一步讨论 78 3.6 小结 79 第4章 数据建模与XML 80 4.1 信息建模 80 4.1.1 静态模型和动态模型 81 4.1.2 文档和数据 82 4.1.3 从何处开始 82 4.1.4 静态信息模型 83 4.1.5 动态建模:对数据进行哪些处理 87 4.2 设计XML文档 90 4.2.1 XML的两种角色 90 4.2.2 将信息模型映射到XML 93 4.3 模式语言和表示法 101 4.3.1 模式的作用 101 4.3.2 将DTD作为模式 103 4.3.3 XML模式建议 109 4.4 小结 110 第5章 文档对象模型 111 5.1 什么是文档对象模型 111 5.1.1 XML文档结构 111 5.1.2 为何使用DOM 113 5.1.3 DOM规范 115 5.1.4 现实世界中的DOM 116 5.1.5 特殊的XML DOM实例— HTML DOM 117 5.2 使用DOM 120 5.2.1 DOM API 120 5.2.2 客户端和服务器端 121 5.2.3 DOM在出版过程中的应用 122 5.3 使用DOM和XML的应用实例 125 5.3.1 简单的客户端实例 125 5.3.2 更复杂的编程实例 133 5.4 DOM和XML的未来 143 5.4.1 W3C的工作 143 5.4.2 应用 144 5.4.3 数据库、模式和DOM 144 5.5 小结 144 第6章 SAX 1.0: XML简易API 145 6.1 事件驱动接口 145 6.2 SAX的由来 148 6.3 SAX的高级特性 165 6.3.1 可选择的源输入 166 6.3.2 处理外部实体 168 6.3.3 选择解析器 169 6.4 一些SAX设计模式 171 6.5 SAX 2.0 187 6.5.1 可配置的接口 187 6.5.2 核心的特性和属性 188 6.6 小结 189 第7章 命名空间和模式 191 7.1 混合词汇表 192 7.1.1 分解问题 193 7.1.2 重用 193 7.1.3 多义性名称冲突 193 7.2 命名空间 195 7.3 定义和声明命名空间 196 7.3.1 声明一个命名空间 196 7.3.2 限定名 196 7.3.3 范围 197 7.4 在格式正规的书籍里使用命名空间 实例 199 7.5 模式 201 7.5.1 与DTD有关的问题 201 7.5.2 一个对创建模式的帮助 203 7.6 W3C在XML 模式方面的工作 209 7.6.1 DTD与XML 模式的比较 210 7.6.2 结构 211 7.6.3 数据类型 219 7.7 简化了的XML Data 222 7.7.1 MSXML对命名空间和模式的支持 228 7.7.2 数据类型 229 7.8 图书目录中的变化 230 7.8.1 为什么烦恼 230 7.8.2 重铸DTD 231 7.8.3 模式协调 236 7.9 小结 240 第8章 链接和查询 241 8.1 XML 信息集合 241 8.1.1 信息类型 241 8.1.2 信息集合的重要性 248 8.1.3 小结 250 8.2 链接 250 8.2.1 什么是链接 250 8.2.2 W3C规范:XLink 252 8.3 Xpointer 266 8.3.1 HTML指针 266 8.3.2 Xpointer 规范 267 8.4 W3C Xpath推荐标准 269 8.4.1 Location Step 269 8.4.2 XPointer对XPath的扩展 276 8.4.3 Xpointer错误 277 8.4.4 小结 277 8.5 XML程序段交换 278 8.5.1 什么是文档程序段 278 8.5.2 文档程序段的一些用途 279 8.5.3 问题:Bare文档程序段并不总 是充分的 281 8.5.4 解决办法:环境信息 283 8.5.5 回顾实例 285 8.5.6 如何传输程序段 287 8.5.7 小结 289 8.6 查询 289 8.6.1 什么是查询语言 289 8.6.2 关系型数据库和XML文档之间 的区别 291 8.6.3 XML查询语言的发展历史 295 8.6.4 使用Xpath和XSLT查询XML文档 298 8.6.5 查询语言展望 309 8.7 小结 309 第9章 转换 XML 310 9.1 为什么转换 XML 311 9.1.1 在不同词汇表之间转换 311 9.1.2 动态转换 312 9.1.3 不同的浏览器 312 9.2 XSL 313 9.3 XSLT 样式表命令 325 9.3.1 创建模板 325 9.3.2 处理空白 326 9.3.3 输出格式 326 9.3.4 合并样式表 327 9.3.5 嵌入样式表 328 9.4 使用XSLT的例子 328 9.4.1 命令的转换 329 9.4.2 循环 335 9.4.3 排序 336 9.4.4 条件处理 338 9.4.5 名称模板 341 9.4.6 编号方式 342 9.4.7 拷贝 344 9.5 使用DOM进行XML文档的转换 345 9.5.1 用DOM进行命令的转换 346 9.5.2 在运行时修改一个XSLT文档 349 9.6 XSL转换与DOM转换的比较 353 9.7 小结 354 第10章 XML和数据库 355 10.1 存储XML 355 10.1.1 持续性问题 355 10.1.2 文档管理 360 10.1.3 XML存储和数据库 362 10.1.4 结论 376 10.2 XML的交换 377 10.2.1 数据标准 377 10.2.2 查询标准 380 10.2.3 结论 388 10.2.4 你可能需要的标准 388 10.3 图书目录的例子 389 10.3.1 处理存在的数据和应用 389 10.3.2 图书目录模式 395 10.4 结论 420 第11章 服务器到服务器 421 11.1 XML的传送 421 11.1.1 基于FTP的XML传送 422 11.1.2 XML和消息队列 422 11.1.3 基于HTTP的XML 423 11.1.4 基于SMTP的XML 423 11.2 作为一种分布式组件模式的XML 424 11.2.1 消息传送和串行化 424 11.2.2 紧耦合系统和松耦合系统 428 11.2.3 通信方式 430 11.3 XML-RPC 431 11.3.1 为什么使用XML-RPC 432 11.3.2 XML-RPC适用于何处 433 11.3.3 XML-RPC规范—技术全瞻 434 11.3.4 XML-RPC的实现 440 11.3.5 书籍应用例子 444 11.3.6 到哪里去 464 11.4 SOAP 465 11.4.1 XML-RPC++ 465 11.4.2 实现 478 11.4.3 结论 493 11.5 WebDAV 493 11.6 小结 494 第12章 电子商务和XML 495 12.1 什么是电子商务 496 12.1.1 对客户直接销售 496 12.1.2 企业对企业交易 497 12.1.3 信息共享和内容联合 497 12.1.4 EDI—电子数据交换 498 12.2 在电子商务中应用XML 503 12.2.1 通常的错误概念 509 12.2.2 在电子商务中使用XML的感受 512 12.3 展望未来 513 12.3.1 发现和调解 514 12.3.2 容器 517 12.3.3 代理 519 12.3.4 模板 520 12.4 理论转化为实现 521 12.5 电子商务解决方案 521 12.6 行业方案 521 12.6.1 纵向行业解决方案的关键 522 12.6.2 旅游 523 12.7 人力资源 524 12.7.1 HR-XML 524 12.7.2 健康 532 12.8 cXML—纵向行业的一个详细 例子 535 12.8.1 为什么有cXML 535 12.8.2 cXML协议规范 536 12.8.3 消息传输 540 12.9 第1步—横向行业 546 12.9.1 ASC X12 546 12.9.2 XML-EDIFACT 547 12.9.3 电子商务XML工作组 549 12.10 第一个横向步骤 549 12.10.1 BizTalk标记规范 550 12.10.2 规范的目标和当前的限制 550 12.10.3 文档结构 551 12.10.4 一个用于Wrox书店的BizTalk 文档 557 12.10.5 BizTalk Jumpstart工具包简介 561 12.10.6 BizTalk服务器 562 12.11 小结 565 第13章 样式XML 567 13.1 解释的位置 567 13.2 客户端的XML转换 568 13.3 解释模型 568 13.3.1 视觉解释 569 13.3.2 语音解释 570 13.3.3 如何将样式表链接到XML文档上 571 13.3.4 规则语言 571 13.3.5 CSS 572 13.3.6 XSL 592 13.3.7 用XSL解释XML 594 13.3.8 DSSSL 611 13.3.9 Omnimark 614 13.4 小结 616 第14章 无线应用协议 617 14.1 新客户介绍 617 14.2 了解无线环境 621 14.2.1 服务 621 14.2.2 无线网络 622 14.2.3 WAP如何解决无线网络应用遇到 的问题 624 14.3 介绍WML 626 14.3.1 怎样将第一份文档传送到电话上 626 14.3.2 WML文档的结构 627 14.3.3 通用属性 629 14.3.4 WML包括什么 630 14.3.5 Meta信息 630 14.3.6 基本字符、表格和演示 631 14.3.7 使用计时器 633 14.3.8 事件处理器 634 14.3.9 使用变量 635 14.3.10 任务和菜单 637 14.3.11 客户端模板 641 14.3.12 表单数据 643 14.3.13 图像 646 14.4 在服务器上生成WML 646 14.5 WROX的WML应用 648 14.6 WML脚本 651 14.6.1 基本概念 652 14.6.2 字节码 652 14.6.3 如何从WML上调用脚本函数 652 14.7 脚本库 653 14.7.1 决定浏览器的状态—WMLBrowser 脚本库 653 14.7.2 Dialogs库 654 14.7.3 特定的语言函数 655 14.7.4 浮点数 655 14.7.5 字符串 656 14.7.6 URL 657 14.8 如何得到更多的信息 660 14.9 小结 660 第15章 实例研究1─数据双重性 662 15.1 商业需求 662 15.2 系统要求 662 15.3 设计时间:让我们开始吧 662 15.4 实现方法概述 663 15.5 建立数据库 665 15.6 提供XML功能的ASP 665 15.7 客户端页面 668 15.8 “以编号浏览”XSL样式表 676 15.9 “以名字浏览”XSL样式表 678 15.10 激活XSL样式表 679 15.11 问题:保持树的同步 680 15.12 小结 683 第16章 实例研究2—XML和分布式 应用程序 684 16.1 目前的弱点 684 16.2 构建网络应用程序的五条原则 685 16.2.1 从粗粒度服务构建应用程序 686 16.2.2 通过查询目录发现服务 687 16.2.3 将服务提供为自描述数据 688 16.2.4 服务是短暂的 689 16.2.5 服务必须可扩展,且能够降低对 外部的要求 690 16.3 商业实例 691 16.4 应用程序设计 692 16.4.1 应用程序的组织 694 16.4.2 程序员服务客户 694 16.4.3 服务 695 16.4.4 交换词汇表 696 16.5 实现 697 16.5.1 定位服务 698 16.5.2 管理数据绑定 699 16.6 输入和编辑程序员信息 700 16.6.1 客户端 700 16.6.2 服务器端 701 16.6.3 用于插入程序员信息的完整客户 端代码 704 16.6.4 用于插入程序员信息的完整服务器 端代码 705 16.7 搜索程序员信息 707 16.7.1 客户端 707 16.7.2 服务器端 709 16.8 清除程序员表单 710 16.9 输入程序员成果报告 711 16.9.1 客户端 711 16.9.2 服务器端 712 16.10 清除成果报告历史表单 714 16.11 获取程序员的成果历史 714 16.11.1 客户端 714 16.11.2 服务器端 716 16.12 经验教训 718 16.12.1 违反的开发原则 718 16.12.2 组件 718 16.12.3 重用的可能性 718 16.13 小结 719 第17章 实例研究3—图书目录信息 服务 720 17.1 图书目录信息服务 721 17.1.1 系统概述 721 17.1.2 创建BCIS 732 17.2 小结 764 第18章 实例研究4—SOAP 765 18.1 追根溯源 765 18.2 SOAP Opera 770 18.2.1 OPERA客户端 771 18.2.2 OPERA服务器 780 18.2.3 订单输入应用程序 793 18.2.4 对象 796 18.3 小结 809 附录A XML 1.0规范 810 附录B IE 5 XML文档对象模型 847 附录C SAX 1.0:XML简单API 887 附录D IE 5 XML模式和数据类型 906 附录E IE 5 XSL引用 915 附录F CSS属性 927 附录G 安装XT 939 附录H 支持与勘误 940
HTML 表单中结合 Asynchronous JavaScript™ + XML (Ajax) 的服务器回调机制,对表单应用 Ajax,对于为应用程序增加 Web 2.0 功能来说是一种可行的办法。通过本文了解增加 Ajax 代码改进 PHP 应用程序用户体验的各种技术。   谈到 Web 2.0 应用程序,首先想到的就是那些最杰出的应用:YouTube 的视频、 üGoogle Maps 可滚动的地图以及 Flikr 的地理定位功能。但是人们常常忽略的是,在这些网站上那些粗糙的 HTML 表格正随着 Ajax 技术的普及经历一场重大的变革。   本文介绍了如何利用 Prototype.js JavaScript 库在表单中结合 Ajax 代码来解决常见的用户体验问题。   简单的 Ajax 表单提交 基于XML的异步JavaScript,简称AJAX,是当前Web创新(称为Web2.0)中的一个王冠。感谢组成AJAX的各种技术,Web应用的交互如Flickr, Backpack和Google在这方面已经有质的飞跃。这个术语源自描述从基于网页的Web应用到基于数据的应用的转换。在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中,给缓慢的Web应用体验着色使之像桌面应用一样。   虽然大部分开发人员在过去使用过XMLHttp或者使用Iframe来加载数据,但仅到现在我们才看到传统的开发人员和公司开始采用这些技术。就像新的编程语言或模型伴随着更多的痛苦,开发人员需要学习新的技巧及如何最好利用这些新技术。   二、AJAX模式   许多重要的技术和AJAX开发模式可以从现有的知识中获取。例如,在一个发送请求到服务端的应用中,必须包含请求顺序、优先级、超时响应、错误处理及回调,其中许多元素已经在Web服务中包含了,就像现在的SOA。AJAX开发人员拥有一个完整的系统架构知识。同时,随着技术的成熟还会有许多地方需要改进,特别是UI部分的易用性。   AJAX开发与传统的CS开发有很大的不同。这些不同引入了新的编程问题,最大的问题在于易用性。由于AJAX依赖浏览器的JavaScript和XML,浏览器的兼容性和支持的标准也变得和JavaScript的运行时性能一样重要了。这些问题中的大部分来源于浏览器、服务器和技术的组合,因此必须理解如何才能最好的使用这些技术。   综合各种变化的技术和强耦合的客户服务端环境,AJAX提出了一种新的开发方式。AJAX开发人员必须理解传统的MVC架构,这限制了应用层次之间的边界。同时,开发人员还需要考虑CS环境的外部和使用AJAX技术来重定型MVC边界。最重要的是,AJAX开发人员必须禁止以页面集合的方式来考虑Web应用而需要将其认为是单个页面。一旦UI设计与服务架构之间的范围被严格区分开来后,开发人员就需要更新和变化的技术集合了。   三、时刻想着用户   AJAX的最大机遇在于用户体验。在使应用更快响应和创新的过程中,定义Web应用的规则正在被重写;因此开发人员必须更注重用户。现在用户已经逐渐习惯如何使用Web应用了。例如用户通常希望每一次按钮点击会导致几秒的延迟和屏幕刷新,但AJAX正在打破这种长时间的状况。因此用户需要重新体验按钮点击的响应了。   可用性是AJAX另人激动的地方而且已经产生了几种新颖的技术。其中最引人注目的是一种称为“黄色隐出”的技术,他在数据更新之前时将用户界面变为黄色,更新完成后立刻恢复原来的颜色。AJAX开发人员将用户从Web应用的负载中解放出来;小心地利用AJAX提供的丰富接口,不久桌面开发人员会发现AJAX是他们的方向。   四、几种工具和技术   随着AJAX迅速地引人注目起来,我想开发人员对这种技术的期待也迅速地增加。就像任何新技术,AJAX的兴旺也需要一整个开发工具/编程语言及相关技术系统来支撑。   1、JavaScript   如名字所示AJAX的概念中最重要而最被忽视的是他也是一种JavaScript编程语言。JavaScript是一种粘合剂使AJAX应用的各部分集成在一起。在大部分时间,JavaScript通常被服务端开发人员认为是一种企业级应用不需要使用的东西应该尽力避免。这种观点来来自以前编写JavaScript代码的经历:繁杂而又易出错的语言。类似的,他也被认为将应用逻辑任意地散布在服务端和客户端中,这使得问题很难被发现而且代码很难重用。在AJAX中JavaScript主要被用来传递用户界面上的数据到服务端并返回结果。XMLHttpRequest对象用来响应通过HTTP传递的数据,一旦数据返回到客户端就可以立刻使用DOM将数据放到网面上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值