枫林在线论坛精华区>>技术交流 |
[382555] 主题: Ajax铺设了更好的开发Web应用的道路(4) |
作者: leaflet (Leaflet) | ||
标题: Ajax铺设了更好的开发Web应用的道路(4)[转载] | ||
来自: 192.168.*.* | ||
发贴时间: 2005年12月17日 11:14:59 | ||
长度: 2481字 | ||
http://searchwebservices.techtarget.com.cn/tips/212/2179212_3.sh tml 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改变时,都 会引发readyst atechange事件,通过onreadystatechange属性配置回调处理函数将会被调 用。 在列表3中,你已看到通过调用函数getReadyStateHandler()创建了一 个处理函数, 并被配置给onreadystatechange属性。getReadyStateHandler()使用了这 样的事实:函数 是JavaScript中的主要对象。 这意味着,函数可以作为参数被传递到其它函数,并且可以创建并返 回其它函数。g etReadystateHandler()要做是就是返回一个函数,来检查XMLHttpRequet 是否已经完成 处理,并传递XML服务器响应到由调用者指定的处理函数。列表6是getRea dyStateHandle 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); } } } } |
||
========== * * * * * ==========
|
返回 |