小试Ajax

         最近正做一个ASP.NET项目,其中有一个及时提醒的小功能, 我觉得用Ajax可以实现,也符合现在Web开发的潮流,就花了两天的时间学Ajax,然后完成了这个小功能。自己是新手,会的东西不多,做完这个小功能后感觉受益不少。

           对了,给大家推荐一本书,叫做《Ajax基础教程》,是Ryan Asleson和Nathaniel.T.Schutta写的,金灵译的,感觉这本书写得非常不错,理论全面,例子详细,技术点又很直接,我看了两天,就有一窍不通到了通了两三窍的地步,起码自己可以编出想要实现的功能。如果你是初学或是以前对Ajax了解不多,建议你读一下,不会花很多时间,但非常有用。有一点要指出,这本书的服务器端用的是Java的servlet,所以你若是要编.NET或PHP的,自己翻译一下后台代码就可以。

           我做的这个即时提醒的主要流程是在登录后首页一Load时触发一个javascript 方法,这个方法每个一定时间向后台发一个请求,后台从数据库读出数据并作相应处理,向前台返回一个XML文档,前台javascript处理方法解析XML文档,并写进一个div中,最后显示div。

好了,废话不多说,写一下代码就明了了。

//前台页面a.htm,后台处理页面b.aspx

//a.htm中代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
    <script type="text/javascript">
    var xmlHttp;
    var num=0;
    //创建xmlhttp对象
    function createXMLHttpRequest()
    {
        if(window.ActiveXObject)
        {
           xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if(window.XMLHttpRequest)
        {
            xmlHttp=new XMLHttpRequest();
        }
    }
    //调用入口
    function dostart()
    {
        createXMLHttpRequest();
        var url="b.aspx";
        xmlHttp.open("GET",url,true);
        xmlHttp.onreadystatechange=startcallback;
        xmlHttp.send(null);
    }
    //处理响应程序
    function startcallback()
    {
        if(xmlHttp.readystate==4)
        {
            if(xmlHttp.status==200)
            {
                refreshmessage();
            }
        }
    }
    //刷新信息处理
    function refreshmessage()
    {
    //获得XML节点
        var rp=xmlHttp.responseXML;
        var resp=rp.selectSingleNode("Response");
        var md=resp.selectSingleNode("messageD");
        var mw=resp.selectSingleNode("messageW");
        var mm=resp.selectSingleNode("messageM");
        var messageD=md.text;
        var messageW=mw.text;
        var messageM=mm.text;
        if(messageD=="0")
        {
            messageD="今天没有员工合同到期";      
        }
        else
        {
            messageD="今天有"+md.text+"名员工合同到期";
        }
        if(messageW=="0")
        {
            messageW="本周没有员工合同到期";      
        }
        else
        {
            messageW="本周将有有"+mw.text+"名员工合同到期";
        }
        if(messageM=="0")
        {
            messageM="本月没有员工合同到期";      
        }
        else
        {
            messageM="本月将有有"+mm.text+"名员工合同到期";
        }
        //向网页中写入提示信息
        var c0=document.getElementById("col0");
        var c1=document.getElementById("col1");
        var c2=document.getElementById("col2");
     
        c0.innerHTML=messageD;
        c1.innerHTML=messageW;
        c2.innerHTML=messageM;
       
        var divr= document.getElementById("divremind");
        //显示div
        divr.style.display="";
        setTimeout("dostart()",300000);
    }
    </script>
</head>
<body style="background-color:#5BCBF5" οnlοad="dostart()">
    <div id="divremind" style="width: 239px; height: 154px; display:none " >
   
        <table style="width: 236px; height: 111px">
           
            <tr ><font color="red">合同到期提醒</font>   
            </tr>
            <tr id="row0">
            <td id="col0">
            </td>
            </tr>
            <tr id="row1">
            <td id="col1">
            </td>
            </tr>
            <tr id="row2">
            <td id="col2">
            </td>
            </tr>
                         
            </tr>
        </table>
   
    </div>

</body>
</html>

//b.aspx.cs中代码

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
public partial class  b: System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
               // Sql语句                     

                //获取三种合同提醒人数
                string sqld = "select count(Cdayremind) from ContractInfo where datediff(dd,getdate(),Cend)<=0 and Cdayremind=0";
                string sqlw = "select count(Cweekremind) from ContractInfo where datediff(dd,getdate(),Cend)<=7 and Cweekremind=0";
                string sqlm = "select count(Cmonthremind) from ContractInfo where datediff(dd,getdate(),Cend)<=30 and Cmonthremind=0";
                string messageD="0";
                string messageW="0";
                string messageM="0";

                //SQLDBOperater为数据库操作类
                SQLDBOperater dbo = new SQLDBOperater();
                try
                {
                    dbo.Connect();
                    dbo.BeginTransAction();
                    DataTable dtd = dbo.SelectToDataTableTA(sqld);
                    DataTable dtw = dbo.SelectToDataTableTA(sqlw);
                    DataTable dtm = dbo.SelectToDataTableTA(sqlm);
                    dbo.CommitTransAction();
                    if (dtd.Rows.Count > 0)
                    {
                        messageD = dtd.Rows[0][0].ToString().Trim();
                    }
                    if (dtw.Rows.Count > 0)
                    {
                        messageW = dtw.Rows[0][0].ToString().Trim();
                    }
                    if (dtm.Rows.Count > 0)
                    {
                        messageM = dtm.Rows[0][0].ToString().Trim();
                    }

                }
                catch (Exception ex)
                {
                    dbo.RollbackTransAction();
                }
                finally
                {
                    dbo.CloseConnection();
                }
                //编写xml文档
                StringBuilder res = new StringBuilder();
                res.Append("<messageD>" + messageD + "</messageD>");
                res.Append("<messageW>"+messageW+"</messageW>");
                res.Append("<messageM>"+messageM+"</messageM>");

                //向前台发送xml
                Response.ContentType = "text/xml";
                Response.CacheControl = "no-cache";
                Response.Write("<Response>");
                Response.Write(res);
                Response.Write("</Response>");
                Response.End();
            }
        
        }

            OK,这个简单的Ajax已经完成了,相信看了代码后,你也能编出一些简单的应用了。其实我感觉Ajax本身没什么,只要你把Javascript,xml和其他一些编程语言搞懂,结合起来灵活运用就没问题。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值