精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-10
最后修改:2008-11-10
继续我的文章,这一篇本应该周末贴的。结果忙了点 ( 忙着玩了 ) ,也不是什么旨在提高 Blog 流量,要流量我找一插件随便刷个十几二十分钟不下一千。写来一则为了巩固一些知识,熟能生巧而已。二则为了一些新手们提供点建议 ( 文章只针对 Rookies 如果你丫功力深厚还望多多指教 ) 老规矩,看例子说话 ( 记得小时候总有什么看图说话,看图写作文等等类似考题,还美其名曰:发散思维 ) 。 Ajax 不是个什么新东西,只不过将一些原有的东西加以整合焕发第二春而已。其中比较重要或者说用的比较多还是 7 种知识中的 3 个知识点: XMLHttpRequest,readyState, 以及 JavaScript( 个人观点 ) 。 最大的用途一般现在就是用在客户端填写的同时进行同步验证,所谓的局部刷新。不在需要重复提交,以及防止表格数据因刷新而丢失。对用户来说无非是一大利好。当然是客户端编程始终保持着它的老习惯:不安全,以及浏览器的兼容性问题。安全性我们不做多打考虑毕竟在好的系统都会被攻破 ( 有钱买好的硬件防火墙吧 ) ,兼容性上 Ajax 分别对主流浏览器做了兼容 ( 像 Maxthon 啊什么其他浏览器他们都是 IE 内核所以不算浏览器的一个种类。一般就 Microsoft IE 和 FireFox 其实一般做 Soft 的两个都会装滴。 ) 简单的例子,简单言语,让你简单的理解原理, Here we go… 先简单介绍下程序:一个输入框,输入 username 当鼠标光标离开输入框时实现用户名唯一性检查。将输入的数据与数据库中的 user 表进行比较,对已经存在的用户名返回提示“用户名已存在”,对不存在重复的用户名提示“用户名可以使用” . 完整的演示程序 ( 如果你还不怎么理解 Ajax ,那你就照着程序写,可以运行后得出结果然后你在慢慢去研究,编程么,从模仿开始 …) : <!----><!----><!----> 程序结构:两个页面 index.jsp checkUser.jsp 一个连接数据库类 Test.java( 其中包括 checkUser() 唯一性判断 ) :看具体源码吧
Index.jsp( 具体源码看附件 ) :类似于编写 JavaScript 脚本语言,首先得获得 XMLHttpReuquest ,此时为了兼容不同浏览器需要分别获得 if (window.XMLHttpRequest) { xmlhttp_request = new XMLHttpRequest();// 响应 FireFox } else if (window.ActiveXObject) { xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" ); }// 响应 IE 当用户鼠标光标离开输入框时,触发函数 getBackInfo(). <!---->1. <!---->从 HTML 页面得到你需要的数据,可以采有 document.getElementById("") 方法。可以先判断是否为空 //2. 建立需要的 URL ,该 URL 就和在 FORM 里面的 method 为 get 时并采用 submit 提交在地址栏里面到的一样 //3. 打开与服务器的连接,这里面有三个必要的参数,虽然文档规定只有两个,但是我个人觉得最好用三个, // 第一个可以是 GET,POST 或者是 POST ,但常用的就是前面的两个,并且最好都用大写,因为有些浏览器如 FireFox 可能会报错, // 第二个就是打报的 URL ,这肯定你是必须的。 // 第三个就是下面的看到的 true ,这里可以是 false 。 true 表示同步处理,你提交后可以做其它的事情, // 这就是 AJAX 里面的 A ,即 asynchronous; 如是 false ,那就得等到服务器的返回才能够做其它的事情。 //4. 等到服务器完成,并且确定返回执行了正确执行的提示,我们就可以做下面我们想做的事情。这些后面的事情就必须通过 // Javascript 去完成了,因为 XMLHttpRequest 的唯一用途就是发送请求及接收服务器的响应结果。 //5. 上面都完成了后,就可以采用 send() 方法向服务器发送你需要发送的信息了,它的参数可以是任何类型,发送的数据格式必须为
在 doCentent() 函数中是对返回状态做判断,然后再显示信息(用户名是否被占用,逻辑判断放在了 Test 函数中)这里对 xmlhttp_request.readyState 简单说明一下: //1. 一定要确定 readystate==4 的完成状态才做下面的事,否则会在建立连接即 readystate==1 的时候就开始, // 然后会在 readystate==2 , readystate==3 , readystate==4 的时候都会执行,不信你可以 alert("") 一个 // 提示信息试试。 //2. 服务器通知完成了,并且还要保证是正确完成的,得到的是我们需要的结果才能够继续,这里常用响应码有: // 200: 成功执行 // 401: 未授权 // 403: 禁止 // 404: 没有找到文件 checkUser.jsp: 这是用来显示判断信息的,在 index.jsp 中通过添加:< td >< dd id = "disCheckResult" ></ dd >/ td > 然后通过 : document.getElementById( "disCheckResult" ).innerHTML=xmlhttp_request.responseText 得到。关于 ineerHTML 不多提了可以自行了解。 你可以通过添加 alert(xmlhttp_request.responseText) 实验一下 responseText 得到的是一张 HTML 页面。在整个 checkUser.jsp 中 我只是通过引用 Test 实例来进行验证,逻辑全部写在了 Test 类中。 Test.java : 这是数据库连接的简单操作,然后通过 select 语句判断是否存在页面输入用户名,存在返回 true 否则为 true 。简单 …. 整个判断到此全部结束,需要的 Rookies 可以下载了附件 运行了看看。可以运行,数据库为 oracle 9i( 需加载驱动当然你可以换成 mysql 数据表简单 两个字段而已 自己看着该下 Test 里的数据源和表名吧 ) 为了大家共同的进步。。。。。。。。更多文章请访问http://jummy.iteye.com/ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 5886 次