微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ajax的常用技巧6---实现web页面局部动态刷新

在浏览网页时,有时往往因为查看局部信息,而导致整个网页都需要从服务器端重新加载一次。在传统的web实现方式中,实现类似的效果必须进行整个页面的刷新。但是借助Ajax技术,可以实现对页面中局部区域的动态刷新,使得用户能够以更好的方式获得最新的数据信息。只更新需要查看的信息,页面中的其他信息保持不变。局部动态更新时Ajax技术的只要功能表现之一。

现在创建一个实例,以演示使用Ajax技术局部动态更新数据。该实例主要是删除Access数据库记录。在删除过程中,只删除指定记录,而不影响显示的其他待删除记录。

1,accessConnection.java

此类用于数据库操作,执行删除语句,返回查询结果集,打开记事本,输入下列代码

  1. packagecom.njue.DBManager;
  2. importjava.io.File;
  3. importjava.sql.*;
  4. publicclassaccessConnection{
  5. ResultSetr;
  6. publicaccessConnection(Stringdelsql,Stringsql)throwsClassNotFoundException,sqlException{
  7. StringdbUr1="jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=E:"+File.separator+"dataAnalysis"+File.separator+"test.mdb";
  8. Stringuser="";
  9. Stringpassword="";
  10. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  11. Connectionc=DriverManager.getConnection(dbUr1,user,password);
  12. Statements=c.createStatement();
  13. if(delsql!=null){
  14. s.executeUpdate(delsql);
  15. }
  16. r=s.executeQuery("SELECTNAME"+"FROMtest");
  17. //s.close();
  18. }
  19. publicResultSetgetResult(){
  20. returnr;
  21. }
  22. }
  23. /*
  24. 其实最重要的一条语句就是:
  25. StringdbUr1="jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=E:"+File.separator+"dataAnalysis"+File.separator+"test.mdb";
  26. 这个路径的要求是极为严格的,只允许MicrosoftAccessDriver这三个单词中间各有一个空格,其他地方绝不允许出现空格,还望各位道友仔细检查。
  27. 还有一点就是File.separator,由于不同的操作系统的分隔符可能不一样,况且我们这里直接用E:\dataAnalysis\test.mdb的话,你可能要再加一个反斜杠去进行转义,为了避免麻烦,所以我们直接用File.separator自动获取系统认的分隔符。
  28. 好了,就如此简单,希望对大家有用!
  29. */


2,服务器端代码

声明accessConnection.java类,调用getResult()方法得到结果集,然后使用while循环将获取数据库的数据保存到字符串content中,最后将content字符串以XML文件的形式输出客户端。代码如下:

  1. <%@pagecontentType="text/html;charset=utf-8"import="java.sql.*,com.njue.DBManager.*"errorPage=""%>
  2. <%
  3. Stringid=request.getParameter("name");
  4. Stringdelsql=null;
  5. StringBuffercontent=newStringBuffer("");
  6. response.setContentType("text/xml");
  7. response.setHeader("Cache-Control","no-cache");
  8. content.append("<?xmlversion=\"1.0\"encoding=\"UTF-8\"?>");
  9. content.append("<contents>");
  10. if(id!=null){
  11. id=newString(id.getBytes("ISO-8859-1"),"GBK");
  12. delsql="deletefromtestwhereNAME='"+id+"'";
  13. }
  14. try{
  15. ResultSetrs=newaccessConnection(delsql,null).getResult();
  16. while(rs.next()){
  17. Stringname=rs.getString(1);
  18. content.append("<content>");
  19. content.append("<name>"+name+"</name>");
  20. content.append("</content>");
  21. }
  22. }
  23. catch(Exceptione){
  24. e.printstacktrace();
  25. }
  26. content.append("</contents>");
  27. out.print(content);
  28. %>


将上述代码保存,我这里保存的名称index.jsp

3, 客户端代码

客户端代码主要实现异步传送数据的显示样式。打开记事本,输入下列代码

  1. <%@pagecontentType="text/html;charset=GBK"import="java.sql.*"errorPage=""%>
  2. <html>
  3. <head>
  4. <scripttype="text/javascript">
  5. varxmlHttp;
  6. varid;
  7. functioncreateXMLHttpRequest(){
  8. if(window.ActiveXObject){
  9. xmlHttp=newActiveXObject("Microsoft.XMLHTTP");//创建XMLHttpRequet对象
  10. }
  11. elseif(window.XMLHttpRequest){
  12. xmlHttp=newXMLHttpRequest();//创建XMLHttpRequet对象
  13. }
  14. }
  15. functionstartRequest(ele){
  16. id=ele.id;
  17. createXMLHttpRequest();
  18. xmlHttp.onreadystatechange=handleStateChange;
  19. xmlHttp.open("POST","index.jsp?name="+id,true);
  20. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  21. xmlHttp.send(null);
  22. alert(str);
  23. }
  24. functionhandleStateChange(){
  25. if(xmlHttp.readyState==4){
  26. if(xmlHttp.status==200){
  27. show();
  28. }
  29. }
  30. }
  31. functionvalidate(){
  32. createXMLHttpRequest();
  33. xmlHttp.onreadystatechange=handleStateChange;
  34. xmlHttp.open("GET","index.jsp",true);
  35. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  36. xmlHttp.send(null);
  37. }
  38. functionshow(){
  39. varxmlDoc=xmlHttp.responseXML;
  40. varyan=xmlDoc.getElementsByTagName("content");
  41. varta="<tableborder=1width=45%align=centerid=ta><tr><td>用户名称</td><td>操作</td></tr>";
  42. for(vari=0;i<yan.length;i++){
  43. vary=yan[i];
  44. varname=y.childNodes[0].firstChild.data;
  45. ta+="<trid='aa'><tdwidth=30%>"+name+"</td>";
  46. ta+="<td><pid="+name+"style='color:green;'onclick='startRequest(this)'><u>删除</u></p></td></tr>";
  47. }
  48. ta+="</table>";
  49. document.getElementById("res").innerHTML=ta;
  50. //alert(yan.length);
  51. }
  52. </script>
  53. </head>
  54. <bodyonLoad="validate()">
  55. <divid="res"></div>
  56. </body>


将上述代码保存,名称Del.jsp。在该文件中,createXMLRequest()函数主要是用于创建XMLHttpRequest异步对象,validate()函数项服务器发送异步请求,该请求主要完成数据库记录的显示功能Callback()函数主要用于处理服务器端的返回数据,即调用show()函数用于设置数据的显示样式。Show()函数主要是解析服务器端返回的XML文件,并解析XML文件中的数据,最后以指定样式显示在当前页。StartRequest()函数也是用于向服务器发送异步请求,但该请求主要完成删除指定数据库记录。在当前网页被加载时,就会执行validate()函数


4,运行效果

运行前:

删除后:

本文转载自:http://www.jb51.cc/article/p-szgjcrmg-dc.html

原文地址:https://www.jb51.cc/ajax/165078.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐