枫林在线论坛>>技术交流 [管理模式] [快速回复] [推荐给朋友] |
[382555] 主题: Ajax铺设了更好的开发Web应用的道路(4) |
作者: leaflet | 标题: Ajax铺设了更好的开发Web应用的道路(4)[转载] | |
昵称: Leaflet | 来自: 192.168.*.* | |
经验值: 105863 | 发贴时间: 2005年12月17日 11:14:59 | |
等级: ★★★★★ | 长度: 2481字 | |
http://searchwebservices.techtarget.com.cn/tips/212/2179212_3.shtml
Ajax铺设了更好的开发Web应用的道路 【2005-11-03 11:17】【】【赛迪网】 列表5展示了由Cart.toXml()方法生成的XML。注意到生成的cart元素的属性,是一 个通过System.currentTimeMillis()生成的时间戳。 列表5:Cart对象序列化得到的XML <?xml version="1.0"?> <cart generated="1123969988414" total="$171.95"> <item code="hat001"> <name>Hat</name> <quantity>2</quantity> </item> <item code="cha001"> <name>Chair</name> <quantity>1</quantity> </item> <item code="dog001"> <name>Dog</name> <quantity>1</quantity> </item> </cart> 如果你观察一下下载站点提供的例子应用源码中的Cart.Java,你将会看到它通过简 单地追加字符串来生成XML。对于本例子来说,它已经足够了,我将会在本系统文章的以 后一期中介绍一些更好的方法。 现在你知道了CartServlet如何响应一个XMLHttpRequest。下一步是返回到客户端, 如何用服务器响应来更新页面状态。 通过JavaScript来处理服务器响应 XMLHttpRequest的readyState属性是一个给出请求生命周期状态的数字值。它从表 示“未初始化”的0变化到表示“完成”的4。每次readyState改变时,都会引发readys t atechange事件,通过onreadystatechange属性配置回调处理函数将会被调用。 在列表3中,你已看到通过调用函数getReadyStateHandler()创建了一个处理函数, 并被配置给onreadystatechange属性。getReadyStateHandler()使用了这样的事实:函数 是JavaScript中的主要对象。 这意味着,函数可以作为参数被传递到其它函数,并且可以创建并返回其它函数。 g etReadystateHandler()要做是就是返回一个函数,来检查XMLHttpRequet是否已经完成 处理,并传递XML服务器响应到由调用者指定的处理函数。列表6是getReadyStateHandl e r()的代码。 列表6:函数getReadyStateHandler() /* * Returns a function that waits for the specified XMLHttpRequest * to complete, then passes its XML response to the given handler function. * req - The XMLHttpRequest whose state is changing * responseXmlHandler - Function to pass the XML response to */ function getReadyStateHandler(req, responseXmlHandler) { // 返回一个监听XMLHttpRequest实例的匿名函数 return function () { // 如果请求的状态是“完成” if (req.readyState == 4) { // 检查是否成功接收了服务器响应 if (req.status == 200) { // 将载有响应信息的XML传递到处理函数 responseXmlHandler(req.responseXML); } else { // 有HTTP问题发生 alert("HTTP error: "+req.status); } } } } |
||
========== * * * * * ==========
|
Top |
Copyright © 2001-2012 枫林在线(www.FengLin.info) All Rights Reserved
页面运行使用30.93毫秒