首先上图(项目的架构)
简单聊天室(Ajax)(jQuery1.4+ashx)_23415
用的工厂模式做的再加上最新的jQuery1.4

只不过公司里都是用的VS2005.

所以环境就只能用VS2005+Sql2005

下面是JavaScript代码,

主要功能就是去请求数据和绑定数据了
  1. <script language="javascript" type="text/javascript">
  2. //配置对角
  3. var _config = new Object({
  4.     url:"AjaxPages/AjaxChatRequest.ashx",
  5.     async:false,
  6.     dataType:"json",
  7.     type:"POST",
  8.     msgID:<%=Application["maxCount"].ToString()%>-1,
  9.     msgName:"Guest",
  10.     msgIP:"<%=Request.UserHostAddress%>"
  11. });

  12. var ChatMsgObjArray = new Array()
  13. ChatMsgObj = function(){
  14.     this.msgID;
  15.     this.msgName;
  16.     this.msgIP;
  17.     this.msgTime;
  18.     this.msgText;
  19. }

  20. //开始运行的
  21. $(document).ready(function(){
  22.     ChangeMsgName();
  23.     GetMsgJsonInfo();
  24. });

  25. function GetMsgJsonInfo()
  26. {
  27.     //alert(_config.msgID);
  28.     GetMsgIDToLastJson(_config.msgID);
  29. }

  30. //修改名字
  31. function ChangeMsgName()
  32. {
  33.     var _msgName=prompt("请输入你的名字","Guest");
  34.     if(_msgName!="" && _msgName!=null)
  35.     {
  36.         _msgName=_msgName.substring(0,8);
  37.         _config.msgName=_msgName;
  38.     }
  39. }

  40. //得到一个ID后的所有消息
  41. function GetMsgIDToLastJson(LastID)
  42. {
  43.     $.ajax({
  44.         url:_config.url,
  45.         data:{"_type":"GetLastToEnd","LastID":LastID},
  46.         async:_config.async,
  47.         dataType:_config.dataType,
  48.         type:_config.type,
  49.         success:function(data){
  50.             //SetSaveObjArray(data);
  51.             BindObjJson(data);
  52.             if(data.length!=0)
  53.             {
  54.                 _config.msgID=data[data.length-1]["msgID"];
  55.             }
  56.             setTimeout("GetMsgJsonInfo()",1000);
  57.         }
  58.     });
  59. }

  60. //保存实体对象
  61. function SetSaveObjArray(data)
  62. {
  63.     for(var i=0;i<data.length;i++)
  64.     {
  65.         var _obj = new ChatMsgObj();
  66.         _obj.msgID=data["msgID"];
  67.         _obj.msgName=data["msgName"];
  68.         _obj.msgIP=data["msgIP"];
  69.         _obj.msgTime=data["msgTime"];
  70.         _obj.msgText=data["msgText"];
  71.         ChatMsgObjArray.push(_obj);
  72.     }
  73. }

  74. //绑定对角
  75. function BindObjJson(data)
  76. {
  77.     for(var i=0;i<data.length;i++)
  78.     {
  79.         var _html = "<div class=\"ShowMsg\"><div><span class=\"ShowSpanName\">"+data["msgName"]+"</span><span class=\"ShowSpanIP\">"+data["msgIP"]+"</span><span class=\"ShowSpanTime\">"+data["msgTime"]+"</span></div><div class=\"ShowMsgText\"><p id=\"ShowMsg_P"+data["msgID"]+"\"></p></div></div>";
  80.         $("#Main_Show_Msg").append(_html);
  81.         $("#ShowMsg_P"+data["msgID"]).text(data["msgText"]);
  82.         getScrollToEnd();
  83.     }
  84. }

  85. //发送对象
  86. function SendObj()
  87. {
  88.     var _obj = new ChatMsgObj()
  89.     _obj.msgName=_config.msgName;
  90.     _obj.msgIP=_config.msgIP;
  91.     _obj.msgTime=Date().toString();
  92.     _obj.msgText=$("#msgText_textarea").val();
  93.    
  94.     if(_obj.msgText=="")
  95.     {
  96.         return;
  97.     }
  98.    
  99.     $.post(_config.url,{"_type":"SendChatMsg","msgName":_obj.msgName,"msgIP":_obj.msgIP,"msgTime":_obj.msgTime,"msgText":_obj.msgText},function(data){
  100.         $("#msgText_textarea").val("");
  101.         document.getElementById("msgText_textarea").focus();
  102.     },_config.dataType);
  103. }
  104. //移动流动条
  105. function getScrollToEnd()
  106. {
  107.     var MsgDiv=document.getElementById("Main_Show_Msg");
  108.     MsgDiv.doScroll("scrollbarPageDown");
  109. }
  110. </script>
复制代码
TOP

下面呢就是处理请求(ashx)
  1.     public class AjaxChatRequest : IHttpHandler
  2.     {

  3.         public void ProcessRequest(HttpContext context)
  4.         {
  5.             context.Response.ContentType = "text/plain";
  6.             if (context.Request.Form["_type"] != null)
  7.             {
  8.                 switch (context.Request.Form["_type"].ToString())
  9.                 {
  10.                     case "GetLastToEnd": GetLastToEnd(context); break;
  11.                     case "SendChatMsg": SendChatMsg(context); break;
  12.                     default: break;
  13.                 }
  14.             }
  15.         }

  16.         /// <summary>
  17.         /// 发送一个实体JOSN对象数据
  18.         /// </summary>
  19.         /// <param name="context"></param>
  20.         private void GetLastToEnd(HttpContext context)
  21.         {
  22.             int LastID;
  23.             bool isNum = int.TryParse(context.Request.Form["LastID"].ToString(), out LastID);
  24.             int maxCount = (int)context.Application["maxCount"];
  25.             if (isNum && LastID != maxCount)
  26.             {
  27.                 B_chatMsg bcm = new B_chatMsg();
  28.                 string whereStr = "msgID > " + LastID.ToString();
  29.                 List<chatMsg> ListCM = bcm.GetModelList(whereStr);
  30.                 string ResJsonStr = JsonConvert.SerializeObject(ListCM);
  31.                 context.Response.Write(ResJsonStr);
  32.             }
  33.             else
  34.             {
  35.                 context.Response.Write("[]");
  36.             }
  37.         }

  38.         /// <summary>
  39.         /// 保存一个信息
  40.         /// </summary>
  41.         /// <param name="context"></param>
  42.         private void SendChatMsg(HttpContext context)
  43.         {
  44.             chatMsg cm = new chatMsg();
  45.             cm.msgIP = context.Request.Form["msgIP"].ToString();
  46.             cm.msgName = context.Request.Form["msgName"].ToString();
  47.             cm.msgText = context.Request.Form["msgText"].ToString();
  48.             cm.msgTime = DateTime.Now;
  49.             B_chatMsg bcm = new B_chatMsg();
  50.             int addMsgID = bcm.Add(cm);
  51.             context.Application.Lock();
  52.             context.Application["maxCount"] = addMsgID;
  53.             context.Application.UnLock();
  54.             //cm = bcm.GetModel(addMsgID);
  55.             cm.msgID = addMsgID;
  56.             context.Response.Write(JsonConvert.SerializeObject(cm));
  57.         }

  58.         public bool IsReusable
  59.         {
  60.             get
  61.             {
  62.                 return false;
  63.             }
  64.         }
  65.     }
复制代码
其中用了Newtonsoft的Json处理类。

下面的图中界面,我不是做美工的.所以界面就不怎么样了
_23416

源码下载:
附件: 亲,您没有权限下载或查看附件喔:-) 马上登录注册吧!
TOP

深情顶帖,楼主加油!
TOP

深情顶帖,楼主加油!
TOP

课不可以用啊?
TOP

提供源码下载就好了。。
TOP

回复 6# solo168 的帖子

这里不是有源码下载吗:http://www.pin5i.com/showtopic-26591-2.html
TOP

LZ,解压密码没有.
TOP

谢谢分享!!!
TOP

谢谢分享!!!
TOP