AJAX基础教程-7 AutoRefresh Page

本文介绍了一个使用AJAX实现页面动态更新的例子。通过JavaScript与Servlet交互,定时从服务器获取数据并更新页面内容,展示了基本的AJAX轮询技术和DOM操作。
js 代码
  1. <script type=< span="">"text/javascript">   
  2. var xmlHttp;   
  3.     function createXMLHttpRequest() {   
  4.         if (window.ActiveXObject) {   
  5.         xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");   
  6.         }   
  7.         else if (window.XMLHttpRequest) {   
  8.         xmlHttp = new XMLHttpRequest();   
  9.         }   
  10.     }   
  11.     function doStart() {   
  12.         createXMLHttpRequest();   
  13.         var url = "DynamicUpdate?task=reset";   
  14.         xmlHttp.open("GET", url, true);   
  15.         xmlHttp.onreadystatechange = startCallback;   
  16.         xmlHttp.send(null);   
  17.     }   
  18.     function startCallback() {   
  19.         if (xmlHttp.readyState == 4) {   
  20.             if (xmlHttp.status == 200) {   
  21.             setTimeout("pollServer()", 5000);   
  22.             refreshTime();   
  23.             }   
  24.         }   
  25.     }   
  26.   
  27.     function pollServer() {   
  28.         createXMLHttpRequest();   
  29.         var url = "DynamicUpdateServlet?task=foo";   
  30.         xmlHttp.open("GET", url, true);   
  31.         xmlHttp.onreadystatechange = pollCallback;   
  32.         xmlHttp.send(null);   
  33.     }   
  34.        
  35.     function refreshTime(){   
  36.         var time_span = document.getElementById("time");   
  37.         var time_val = time_span.innerHTML;   
  38.         var int_val = parseInt(time_val);   
  39.         var new_int_val = int_val - 1;   
  40.         if (new_int_val > -1) {   
  41.         setTimeout("refreshTime()", 1000);   
  42.         time_span.innerHTML = new_int_val;   
  43.         } else {   
  44.         time_span.innerHTML = 5;   
  45.         }   
  46.     }   
  47.        
  48.     function pollCallback() {   
  49.         if (xmlHttp.readyState == 4) {   
  50.             if (xmlHttp.status == 200) {   
  51.                 var message =   
  52.                 xmlHttp.responseXML   
  53.                 .getElementsByTagName("message")[0].firstChild.data;   
  54.                 if (message != "done") {   
  55.                 var new_row = createRow(message);   
  56.                 var table = document.getElementById("dynamicUpdateArea");   
  57.                 var table_body =   
  58.                 table.getElementsByTagName("tbody").item(0);   
  59.                 var first_row =   
  60.                 table_body.getElementsByTagName("tr").item(1);   
  61.                 table_body.insertBefore(new_row, first_row);   
  62.                 setTimeout("pollServer()", 5000);   
  63.                 refreshTime();   
  64.                 }   
  65.             }   
  66.         }   
  67.     }   
  68.        
  69.     function createRow(message) {   
  70.         var row = document.createElement("tr");   
  71.         var cell = document.createElement("td");   
  72.         var cell_data = document.createTextNode(message);   
  73.         cell.appendChild(cell_data);   
  74.         row.appendChild(cell);   
  75.         return row;   
  76.     }   
  77. </script>  
java 代码
  1. package ajax.foundations_of_ajax;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.PrintWriter;   
  5.   
  6. import javax.servlet.ServletException;   
  7. import javax.servlet.http.HttpServlet;   
  8. import javax.servlet.http.HttpServletRequest;   
  9. import javax.servlet.http.HttpServletResponse;   
  10.   
  11. public class DynamicUpdateServlet extends HttpServlet {   
  12.     private int counter = 1;   
  13.   
  14.     /**  
  15.      * Handles the HTTP GET method.  
  16.      *   
  17.      * @param request  
  18.      *            servlet request  
  19.      * @param response  
  20.      *            servlet response  
  21.      */  
  22.     protected void doGet(HttpServletRequest request,   
  23.             HttpServletResponse response) throws ServletException, IOException {   
  24.         String res = "";   
  25.         String task = request.getParameter("task");   
  26.         String message = "";   
  27.         if (task.equals("reset")) {   
  28.             counter = 1;   
  29.         } else {   
  30.             switch (counter) {   
  31.             case 1:   
  32.                 message = "Steve walks on stage";   
  33.                 break;   
  34.             case 2:   
  35.                 message = "iPods rock";   
  36.                 break;   
  37.             case 3:   
  38.                 message = "Steve says Macs rule";   
  39.                 break;   
  40.             case 4:   
  41.                 message = "Change is coming";   
  42.                 break;   
  43.             case 5:   
  44.                 message = "Yes, OS X runs on Intel - has for years";   
  45.                 break;   
  46.             case 6:   
  47.                 message = "Macs will soon have Intel chips";   
  48.                 break;   
  49.             case 7:   
  50.                 message = "done";   
  51.                 break;   
  52.             }   
  53.             counter++;   
  54.         }   
  55.         res = "<message></message>" + message + "";   
  56.         PrintWriter out = response.getWriter();   
  57.         response.setContentType("text/xml");   
  58.         response.setHeader("Cache-Control""no-cache");   
  59.         out.println("<response></response>");   
  60.         out.println(res);   
  61.         out.println("");   
  62.         out.close();   
  63.     }   
  64. }   
在使用谷歌Chrome浏览器的过程中,用户可能会遇到一些特殊的需求,比如在浏览网页的时候需要网页每隔一段时间就自动刷新的插件,这个需求最理想的情况就是像节假日刷火车票一样,用户如果每隔一段时间都手动点击刷新的话,是谁也受不了,所以需要一种插件来帮助自己完成这个重复性的动作。 但是由于刷票这个需求可能不止是要简单地刷新页面,还需要更加个性化的刷新功能的定制,所以今天给大家介绍的这款定时刷新Chrome页面的插件并不适合刷票的行为,上面只是举了一个需要定时刷新页面的例子。 Chrome自动刷新插件:Auto Refresh是一款可以自行在Chrome中定制刷新时间的谷歌浏览器插件,用户只需要简单的设置就可以让Chrome完成有用但无聊的定时重复刷新的操作。 Auto Refresh的使用方式也是非常的简单,可以安装下面的步骤进行: 1.在Chrome浏览器中安装Auto Refresh插件,并在浏览器的右上角点击Auto Refresh插件按钮来启动配置界面。 2.在自动刷新的分钟和秒数中填写相应的数字表示刷新的时间间隔。 3.点击开始按钮来启动Auto Refresh插件的自动刷新功能。 Auto Refresh插件虽然看起来功能非常的简单,但是其在一个特殊的使用场景中会代替用户的劳动力变得非常的有用。如果您对这款插件感兴趣的话可以点击下面的下载链接安装到自己的Chrome浏览器中。
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 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值