pingpang

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  21 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

2012年8月12日 #

这几天自己琢磨起来javascript,以前都是看看没有实战过,现在觉得实战起来果然错误多多,以后要不断总结错误,关键可以减少调试时间,菜鸟啊:

1.js通常有一个地方错误了, 下边的函数都不会再继续执行啦(本来觉得很正常的事,但是...)

2.为什么open()请求服务器的时候,请求的servlet后边要加一个参数变化,告知服务器这是一个新的请求???否则在IE8中请求失败

var bojingNum = 0;
//定义一个变量用来存储xmlHttpRequest对象
  var xmlHttp=null;
  //该函数用于创建一个xmlHttpRequest对象
  function createXMLHttpRequest()
  {
    if (window.ActiveXObject)//ActiveXObject这个对象是IE浏览器提供的控件,所以有的网银只支持这样的控件的IE浏览器
    {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE浏览器生成的对象
        
    } else if (window.XMLHttpRequest)//除了IE外的其他浏览器
    {
        xmlHttp = new XMLHttpRequest();
    }
  }
  //这是一个通过ajax刷新统计图的方法
  function  autoFlush()
  {
      //创建日期变量时间变量
      var tempTime = new Date();
      var tempParameter = tempTime.getTime();
      //创建一个xmlHttpRequest对象
      createXMLHttpRequest();
      if(xmlHttp!=null)
      {
      //这里放置一个时间参数是为了让服务器知道这是一个新的请求
      xmlHttp.open("GET", "SerialDataSvt?tmd="+tempParameter);
       //将状态触发器绑定到一个函数
      xmlHttp.onreadystatechange=processor;
      
      //请求发送
      xmlHttp.send(null);
      }
     
      
  }
  //处理从服务器返回的xml文档
  function processor()
  {
      //定义一个变量用于存储从服务器返回的结果
      var  result;
      if(xmlHttp.readyState==4)//如果响应完成
          {
             if(xmlHttp.status==200)//如果返回成功
                 {
                
                   //取出服务器返回的xml文档的所有counter标签的子节点
                 result = xmlHttp.responseXML.getElementsByTagName("data");//alert(result);
            
                //解析xml中的数据并更新统计图状态
                
                 for(var i = 0 ; i < result.length; i++)
                     {
                          //用于统计数据更新统计图片状态
                     var id =result[i].getAttribute("id");//alert(id);
                     var dir =result[i].getAttribute("dir"); //alert(dir);
                    
                    var  datas =xmlHttp.responseXML.getElementsByTagName("dataContent")[0].childNodes[0].nodeValue;
                    var  addTime =xmlHttp.responseXML.getElementsByTagName("addTime")[0].childNodes[0].nodeValue;
                    
                    
                        if(datas.substring(17,18)=="1")
                            { 
                             document.getElementById("yujing"+(i+1)).innerHTML="<embed   src='video/wartgroud.mp3'  type=audio/x-ms-wma autostart='true' loop='true'>报警中</embed> ";
                             document.getElementById("yujingPic"+(i+1)).style.display = 'block';
                            bojingNum++;
                            document.getElementById("yujingNum"+(i+1)).innerHTML="预警次数:"+bojingNum;
                            }
                        else
                            {
                            document.getElementById("yujing"+(i+1)).innerHTML="暂无报警";
                             document.getElementById("yujingPic"+(i+1)).style.display = 'none';
                            }
                     document.getElementById("n_nodeID"+i).innerHTML= id+dir;
                     document.getElementById("n_nodeData"+i).innerHTML= datas; 
                     document.getElementById("n_nodeTime"+i).innerHTML= addTime; 
                     
                     document.getElementById("s_nodeID"+i).innerHTML= id+dir;
                     document.getElementById("s_nodeData"+i).innerHTML= datas; 
                     document.getElementById("s_nodeTime"+i).innerHTML= addTime; 
                     
                     document.getElementById("e_nodeID"+i).innerHTML= id+dir;
                     document.getElementById("e_nodeData"+i).innerHTML= datas; 
                     document.getElementById("e_nodeTime"+i).innerHTML= addTime; 
                     
                     document.getElementById("w_nodeID"+i).innerHTML= id+dir;
                     document.getElementById("w_nodeData"+i).innerHTML= datas; 
                     document.getElementById("w_nodeTime"+i).innerHTML= addTime; 
          
                     }
                 }
          }  
  }
  //每隔一秒就执行一次autoFlush方法
 setInterval(autoFlush, 2000);

posted @ 2012-08-16 22:41 往事随风 阅读(2072) | 评论 (1)编辑 收藏

昨天看到C#群里有人问一个投票功能如何实现...

我对此很感兴趣,为了练习一下,就有了以下代码。

投票功能使用jQuery实现..纯html代码...数据通过json字符串传递,通过 eval转换为json对象

投票功能分为:

1.设置投票内容:



2.投票:



3.投票结果:


文件列表:



传值:

{
    info: 
"   由京东针对国美苏宁发起的新一轮电商大战随着当当、易讯等企业的“乱入”,正演变为整个国内电商行业的混战。电商“8.15”价格战谁会是最后的赢家?今年的电商排位战,谁能笑到最后?<br/><br/>1.今年是电商排位战,你最看好谁?<br/>--------------------isea533----------------------",
    choices: [{
        name: 
"choice0",
        value: 
"京东商城",
        num: 
6,
        percent: 
0.25
    },
    {
        name: 
"choice1",
        value: 
"苏宁易购",
        num: 
5,
        percent: 
0.20833333333333334
    },
    {
        name: 
"choice2",
        value: 
"国美商城",
        num: 
4,
        percent: 
0.16666666666666666
    },
    {
        name: 
"choice3",
        value: 
"当当网",
        num: 
2,
        percent: 
0.08333333333333333
    },
    {
        name: 
"choice4",
        value: 
"亚马逊中国",
        num: 
3,
        percent: 
0.125
    },
    {
        name: 
"choice5",
        value: 
"天猫(原淘宝商城)",
        num: 
4,
        percent: 
0.16666666666666666
    }]
}


posted @ 2012-08-16 22:39 往事随风 阅读(2544) | 评论 (0)编辑 收藏

jQuery对象初始化的传参方式包括:
1.$(DOMElement)
2.$('<h1>...</h1>'), $('#id'), $('.class') 传入字符串, 这是最常见的形式, 这种传参数经常也传入第二个参数context指定上下文,其中context参数可以为$(...), DOMElement
3.$(function() {}); <===> $(document).ready(function() { });
4.$({selector : '.class', context : context}) <===> $('.class', context)

jQuery.fn = jQuery.prototype = {
    constructor: jQuery,
    init: function( selector, context, rootjQuery ) {
        var match, elem, ret, doc;

        // 处理$(""), $(null), $(undefined), $(false)这几种参数,直接返回this
        if ( !selector ) {
            return this;
        }

        // 当传参selector为DOM结点时,将context置为selector
        if ( selector.nodeType ) {
            this.context = this[0] = selector;
            this.length = 1;
            return this;
        }

        // Handle HTML strings
        // 当传入的selector参数为字符串时,
        if ( typeof selector === "string" ) {
            if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
                // Assume that strings that start and end with <> are HTML and skip the regex check
                match = [ null, selector, null ];

            } else {
                match = rquickExpr.exec( selector );
            }

            // Match html or make sure no context is specified for #id
            if ( match && (match[1] || !context) ) {

                // HANDLE: $(html) -> $(array)
                if ( match[1] ) {
                    context = context instanceof jQuery ? context[0] : context;
                    doc = ( context && context.nodeType ? context.ownerDocument || context : document );

                    // scripts is true for back-compat
                    selector = jQuery.parseHTML( match[1], doc, true );
                    if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
                        this.attr.call( selector, context, true );
                    }

                    return jQuery.merge( this, selector );

                // HANDLE: $(#id)
                } else {
                    elem = document.getElementById( match[2] );

                    // Check parentNode to catch when Blackberry 4.6 returns
                    // nodes that are no longer in the document #6963
                    if ( elem && elem.parentNode ) {
                        // Handle the case where IE and Opera return items
                        // by name instead of ID
                        if ( elem.id !== match[2] ) {
                            return rootjQuery.find( selector );
                        }

                        // Otherwise, we inject the element directly into the jQuery object
                        this.length = 1;
                        this[0] = elem;
                    }

                    this.context = document;
                    this.selector = selector;
                    return this;
                }

            // HANDLE: $(expr, $(...))
            } else if ( !context || context.jquery ) {
                return ( context || rootjQuery ).find( selector );

            // HANDLE: $(expr, context)
            // (which is just equivalent to: $(context).find(expr)
            } else {
                return this.constructor( context ).find( selector );
            }

        // HANDLE: $(function)
        // Shortcut for document ready
        // 当selector为function时相当于$(document).ready(selector);
        } else if ( jQuery.isFunction( selector ) ) {
            return rootjQuery.ready( selector );
        }

        // 当selector参数为{selector:'#id', context:document}之类时,重置属性selector和context
        if ( selector.selector !== undefined ) {
            this.selector = selector.selector;
            this.context = selector.context;
        }

        return jQuery.makeArray( selector, this );
    }
}; 
posted @ 2012-08-16 22:39 往事随风 阅读(1797) | 评论 (0)编辑 收藏

最近项目任务繁重,更新博客会较慢,不过有时间希望可以把自己的积累分享出来。

   JavaScript正则实战(会根据最近写的不断更新)

1、javascript 正则对象替换创建 和用法: /pattern/flags  先简单案例学习认识下replace能干什么

    正则表达式构造函数: new RegExp("pattern"[,"flags"]); 

    正则表达式替换变量函数:stringObj.replace(RegExp,replace Text);

参数说明: 
pattern -- 一个正则表达式文本 
flags -- 如果存在,将是以下值: 
g: 全局匹配 
i: 忽略大小写 
gi: 以上组合 

//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url
var
 reg=new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
var url="http://www.qidian.com/BookReader/1017141,20361055.aspx";

//方式一,最简单常用的方式
var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3");
alert(rep);

//方式二 ,采用固定参数的回调函数
var rep2=url.replace(reg,function(m,p1,p2,p3){return p1+"ShowBook.aspx?bookId="+p3+"&chapterId="+p3});
alert(rep2);

//方式三,采用非固定参数的回调函数
var rep3=url.replace(reg,function(){var args=arguments; return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];});
alert(rep3);

//方法四
//方式四和方法三很类似, 除了返回替换后的字符串外,还可以单独获取参数
var bookId;
var chapterId;
function capText()
{
    var args=arguments; 
    bookId=args[2];
    chapterId=args[3];
    return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];
}

var rep4=url.replace(reg,capText);
alert(rep4);
alert(bookId);
alert(chapterId);

//使用test方法获取分组
var reg3=new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
reg3.test("http://www.qidian.com/BookReader/1017141,20361055.aspx");
//获取三个分组
alert(RegExp.$1); 
alert(RegExp.$2);
alert(RegExp.$3);

2、 学习最常用的 test exec match search  replace  split 6个方法

1) test  检查指定的字符串是否存在
var data = “123123″;
var reCat = /123/gi;
alert(reCat.test(data));  //true
//检查字符是否存在  g 继续往下走  i 不区分大小写

2) exec 返回查询值
var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”;
var reCat = /cat/i;
alert(reCat.exec(data));  //Cat

3)match  得到查询数组
var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”;
var reCat = /cat/gi;
var arrMactches = data.match(reCat)
for (var i=0;i < arrMactches.length ; i++)
{
alert(arrMactches[i]);   //Cat  cat
}

4) search  返回搜索位置  类似于indexof
var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”;
var reCat = /cat/gi;
alert(data.search(reCat));  //23

5) replace  替换字符  利用正则替换
var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”;
var reCat = /cat/gi;
alert(data.replace(reCat,”libinqq”));

6)split   利用正则分割数组
var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”;
var reCat = /\,/;
var arrdata = data.split(reCat);
for (var i = 0; i < arrdata.length; i++)
{
alert(arrdata[i]);
}

3、常用表达式收集:

"^\\d+$"  //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$"  //正整数
"^((-\\d+)|(0+))$"  //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$"  //负整数
"^-?\\d+$"    //整数
"^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0)
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"
//正浮点数
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"
//负浮点数
"^(-?\\d+)(\\.\\d+)?$"  //浮点数
"^[A-Za-z]+$"  //由26个英文字母组成的字符串
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串
"^[a-z]+$"  //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串
"^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url
"^[A-Za-z0-9_]*$"。

============================================正则表达式基础知识==============================================

^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a" 
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A" 
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa 
+ 匹配前面元字符1次或多次,/ba+/将匹配ba,baa,baaa 
? 匹配前面元字符0次或1次,/ba?/将匹配b,ba 
(x) 匹配x保存x在名为$1...$9的变量中 
x|y 匹配x或y 
{n} 精确匹配n次 
{n,} 匹配n次以上 
{n,m} 匹配n-m次 
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) 
[^xyz] 不匹配这个集合中的任何一个字符 
[\b] 匹配一个退格符 
\b 匹配一个单词的边界 
\B 匹配一个单词的非边界 
\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M 
\d 匹配一个字数字符,/\d/ = /[0-9]/ 
\D 匹配一个非字数字符,/\D/ = /[^0-9]/ 
\n 匹配一个换行符 
\r 匹配一个回车符 
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等 
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/ 
\t 匹配一个制表符 
\v 匹配一个重直制表符 
\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9] 
\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。 

posted @ 2012-08-12 23:07 往事随风 阅读(55024) | 评论 (0)编辑 收藏

在浏览网页时,经常会看到分页显示的页面。如果想把大量的数据提供给浏览者,分页显示是个非常实用的方法。分页显示数据能够帮助浏览者更好地查看信息,能够有条理的显示信息。
在传统的web技术中,分页显示的相关操作都是在服务器端进行的,服务器端获取客户端的请求分页,并根据请求页数获取指定的结果集。最后把结果集中的数据返回到客户端,这时返回结果中不但包含了数据,还可能包含了数据的显示样式。客户端的每一次数据更新,都会重新打开一个网页,如果网页中包含了很多html元素,就会造成网页打开速度较慢的情况。
为了显示部分数据,而需要加载整个页面的数据,显得有点得不偿失。使用Ajax技术可以很好的弥补这些问题,服务器端只传输数据库表中的数据,客户端获取这些数据只更新局部内容,与数据无关的其他元素保持不变。
现在创建一个实例,以演示使用Ajax技术实现数据的分页显示。该实例的代码实现分为服务器端和客户端。

1,准备工作


我们这里使用Mysql数据库,我在shop数据库中创建了一张mobileshop表,这张表有两个字段name,model。
打开记事本,输入下列代码:

<%@ page language="java" import="java.util.*,java.sql.*,java.io.*" pageEncoding="GBK"%>
<%
 class DBManager{
     
String userName="root";
    
String password="123456";
    Connection conn
=null;
    Statement stmt
=null;
    
String url="jdbc:mysql://localhost:3306/shop";
    ResultSet rst;
public DBManager(String sql){

    try {
        Class.forName(
"com.mysql.jdbc.Driver");
        conn
=DriverManager.getConnection(url,userName,password);
        stmt
=conn.createStatement();
        rst
=stmt.executeQuery(sql);
    } catch (Exception e) {
        
// TODO Auto-generated catch block
        e.printStackTrace();
    }    
}
public ResultSet getResultSet(){
return rst;
}
}

%>

将上述代码保存为Conn.jsp,用于返回查询结果集。

2,服务器端代码


     在本实例中,服务器端代码具有获取客户端请求页数和产生指定记录集的功能。打开记事本,输入下列代码:


<%@ page contentType="text/html; charset=utf-8" import="java.sql.*" errorPage="" %>
<%@ include file="Conn.jsp" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%
 try
 {
ResultSet rs
=new DBManager("select name,model from mobileshop").getResultSet();
int intPageSize;      //一页显示的记录数
int intRowCount;      //记录的总数
int intPageCount;     //总页数
int intPage;         //待显示的页码
String strPage;
int i;
intPageSize
=2;       //设置一页显示的记录数
strPage
=request.getParameter("page");         //取得待显示的页码
if(strPage==null)             //判断strPage是否等于null,如果是,则显示第一页数据
{
intPage
=1;
}
else{
intPage
=java.lang.Integer.parseInt(strPage);   //将字符串转化为整形
}
if(intPage<1)
{
intPage
=1;
}
//获取记录总数
rs.last();
intRowCount
=rs.getRow();
//计算总页数
intPageCount
=(intRowCount+intPageSize-1)/intPageSize;
//调整显示的页码
if(intPage>intPageCount) intPage=intPageCount;
if(intPageCount>0)
{
//将记录指针定位到待显示页的第一条记录上
rs.absolute((intPage
-1)*intPageSize+1);
}
//下面用于显示数据
i
=0;
  StringBuffer content
=new StringBuffer(""); 
  response.setContentType(
"text/xml"); 
  response.setHeader(
"Cache-Control","no-cache");
  content.append(
"<?xml version=\"1.0\"   encoding=\"UTF-8\" ?>");
  content.append(
"<contents>");
while(i<intPageSize && !rs.isAfterLast())
{
     
     
String name=rs.getString("name");
     
String email=rs.getString("model");
     content.append(
"<content>");
     content.append(
"<name>"+ name +"</name>");
     content.append(
"<model>"+email+"</model>");
     content.append(
"</content>");
 rs.next();
 i
++;
 }
 content.append(
"</contents>");
 System.out.print(content);
 out.print(content);
 }
 catch(Exception e)
 {
 e.printStackTrace();
 }
 
%>

posted @ 2012-08-12 23:05 往事随风 阅读(1973) | 评论 (2)编辑 收藏

网页自动刷新功能在web网站上已经屡见不鲜了,如即时新闻信息,股票信息等,都需要不断获取最新信息。在传统的web实现方式中,想要实现类似的效果,必须进行整个页面的刷新,在网络速度受到一定限制的情况下,这种因为一个局部变动而牵动整个页面的处理方式显得有些得不偿失。Ajax技术的出现很好的解决了这个问题,利用Ajax技术可以实现网页的局部刷新,只更新指定的数据,并不更新其他的数据。
   现在创建一个实例,以演示网页的自动刷新功能,该实例模拟火车侯票大厅的显示字幕。

1,服务器端代码


该实例服务器端代码的功能比较简单,即产生一个随机数,并以XML文件形式返回给客户端。打开记事本,输入下列代码:

<%@ page contentType="text/html; charset=gb2312" %>
<%
response.setContentType(
"text/xml; charset=UTF-8");//设置输出信息的格式及字符集
response.setHeader(
"Cache-Control","no-cache");
out.println(
"<response>"); 
for(int i=0;i<2;i++){
    out.println(
"<name>"+(int)(Math.random()*10)+"</name>");
    out.println(
"<count>" +(int)(Math.random()*100)+ "</count>");
}
out.println(
"</response>");
out.close();
%> 

 


保存上述代码,名称为auto.jsp。在该文件中,使用java.lang包中的Math类,产生一个随机数。

2,客户端代码


本实例客户端代码主要利用服务器端返回的数字,指定显示样式。打开记事本,输入下列代码

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<head>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
</head>
<script language="javascript">


var XMLHttpReq;
  
//创建XMLHttpRequest对象       
    function createXMLHttpRequest() {
  
if(window.XMLHttpRequest) { //Mozilla 浏览器
   XMLHttpReq = new XMLHttpRequest();
  }
  
else if (window.ActiveXObject) { // IE浏览器
   try {
    XMLHttpReq 
= new ActiveXObject("Msxml2.XMLHTTP");
   } 
catch (e) {
    
try {
     XMLHttpReq 
= new ActiveXObject("Microsoft.XMLHTTP");
    } 
catch (e) {}
   }
  }
 }
 
//发送请求函数
 function sendRequest() {
  createXMLHttpRequest();
        
var url = "auto.jsp";
  XMLHttpReq.open(
"GET", url, true);
  XMLHttpReq.onreadystatechange 
= processResponse;//指定响应函数
  XMLHttpReq.send(null);  // 发送请求
 }
 
// 处理返回信息函数
    function processResponse() {
     
if (XMLHttpReq.readyState == 4) { // 判断对象状态
         if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
    DisplayHot();
    setTimeout(
"sendRequest()"1000);
            } 
else { //页面不正常
                window.alert("您所请求的页面有异常。");
            }
        }
    }
    
function DisplayHot() {
     
var name = XMLHttpReq.responseXML.getElementsByTagName("name")[0].firstChild.nodeValue;
     
var count = XMLHttpReq.responseXML.getElementsByTagName("count")[0].firstChild.nodeValue;

           document.getElementById(
"cheh").innerHTML = "T-"+name+"次列车"
    document.getElementById(
"price").innerHTML = count+""
 }


</script> 
<body onload =sendRequest()>
<table style="BORDER-COLLAPSE: collapse" borderColor=#5555555 cellSpacing=0 cellPadding=0 width=200     border=0>

<TR>
   <TD align=middle bgColor=#abc2d0 height=19 colspan="2"><B>开往北京的列车</B> </TD>
</TR>
<tr>
   <td height="20"> 车号:</td>
   <td height="20" id="cheh"> </td>
</tr>
<tr>
   <td height="20"> 价格:</td>
   <td height="20" id="price"> </td>
</tr>
</table> 
</body> 
 

将上述代码保存,名称为autoRefresh.jsp。在该文件中,createXMLHttpRequest()函数用于创建异步调用对象;sendRequest()函数用于发送请求到客户端;processResponse()函数用于处理服务器端的响应,在处理过程中调用DisplayHot()函数设定数据的显示样式。其中,setTimeout(“sendRequest()”,1000)函数的含义为每隔1秒的时间调用sendRequest()函数,该函数在Ajax页面刷新中起了一个主导作用。DisplayHot()函数主要用于从服务器端返回的XML文件进行解析,并获取返回数据,显示在当前页面。

posted @ 2012-08-12 23:03 往事随风 阅读(2095) | 评论 (0)编辑 收藏