分享
 
 
 

ajax+asp.net+mssql无刷新聊天室

王朝学院·作者佚名  2010-01-08
窄屏简体版  字體: |||超大  

ajax+asp.net+mssql无刷新聊天室

ajax+asp.net+mssql实现的ajax无刷新聊天室,支持html web编辑器。供大家参考下。不过有个小问题,就是firefox下如果使用快捷键ctrl+enter发送信息时,如果不延时调用发送函数,会弹出ff的下载对话框,奇怪。

JScript codeif(e.ctrlKey&&e.keyCode==13){

e.preventDefault();

e.stopPropagation();

setTimeout("Showbo.Chat.send()",50);//在ff中马上使用alert提示时尽然弹出下载工具,奇怪.

return false;}

},false);

为了加快速度,使用了存储过程。

asp及php版本请看下面的文章

ajax+asp+mssql无刷新聊天室

ajax+php+mssql无刷新聊天室

要使用不同的动态页面,只需要更改lib.js文件中RequstUrl变量的值即可。

完整示例下载

效果如下

内容长度限制,所以就不贴出所有的代码了,要看全部代码请下载示例或者查看下面这篇文章

ajax+asp.net+mssql无刷新聊天室

下面贴出C#的主要的代码,其他版本请查看上面的链接

ajax.cs

C# codeusing System;

using System.Web;

using System.Data;

using System.Configuration;

using System.Data.SqlClient;

public class Ajax

{

private static bool IsNull(string v)

{

if (v == null || v.Trim() == "") return true;

else return false;

}

private static string Js(string v)

{

return v.Replace("'", "'");

}

public static string Login()

{

HttpRequest Request = HttpContext.Current.Request;

string rStr = "";

string UserName = Request.Form["nn"];

if (IsNull(UserName))

{

rStr = "success:false,err:'昵称不能为空!'";

}

else if (UserName.Length > 20)

{

rStr = "success:false,err:'昵称不能超过20个字符!'";

}

else

{

string UserId = "", Key = "";

SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);

cn.Open();

try

{

SqlCommand cm = new SqlCommand("ajaxLogin", cn);

cm.CommandType = CommandType.StoredProcedure;

cm.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 50));

cm.Parameters["@UserName"].Value = UserName;

//==========输出参数

cm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.NVarChar, 18));

cm.Parameters["@UserId"].Direction = ParameterDirection.Output;

cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));

cm.Parameters["@UserKey"].Direction = ParameterDirection.Output;

cm.ExecuteNonQuery();

UserId = cm.Parameters["@UserId"].Value.ToString().Trim();

Key = cm.Parameters["@UserKey"].Value.ToString().Trim();

if (UserId == "-1") rStr = @"success:false,err:'发生错误,请稍后再试!'";

else if (UserId == "0") rStr = @"success:false,err:'已经存在此用户昵称,请修改您的昵称!'";

else rStr += "success:true,UserId:'" + UserId + "',Key:'" + Key + "'";

cm.Dispose();

}

catch (Exception e)

{

rStr = @"success:false,err:'原因n" + Js(e.Message) + "'";

}

cn.Close();

}

return rStr;

}

public static string Logout()

{

HttpRequest Request = HttpContext.Current.Request;

string rStr = "", UserId = Request.Form["uid"], Key = Request.Form["key"];

if (IsNull(UserId) || IsNull(Key)) return "success:false,err:'用户信息丢失!'";

SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);

cn.Open();

try

{

SqlCommand cm = new SqlCommand("ajaxLogout", cn);

cm.CommandType = CommandType.StoredProcedure;

cm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.NVarChar, 18));

cm.Parameters["@UserId"].Value = UserId;

cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));

cm.Parameters["@UserKey"].Value = Key;

cm.Parameters.Add(new SqlParameter("@Result", SqlDbType.Int));

cm.Parameters["@Result"].Direction = ParameterDirection.Output;

cm.ExecuteNonQuery();

if(cm.Parameters["@UserId"].Value.ToString().Trim()=="0")rStr = "success:false,err:'用户信息不存在!'";

else rStr="success:true";

cm.Dispose();

}

catch (Exception e)

{

}

cn.Close();

return rStr;

}

public static string Say()

{

HttpRequest Request = HttpContext.Current.Request;

string From = Request.Form["from"], To = Request.Form["to"]

, Key = Request.Form["key"], Msg = Request.Form["ct"], rStr = "";

if (IsNull(From) || IsNull(Key) || IsNull(To) || IsNull(Msg)) rStr = "success:false,err:'信息传递不完整!'";

else

{

SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);

cn.Open();

try

{

SqlCommand cm = new SqlCommand("ajaxSay", cn);

cm.CommandType = CommandType.StoredProcedure;

cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));

cm.Parameters["@UserKey"].Value = Key;

cm.Parameters.Add(new SqlParameter("@From", SqlDbType.NVarChar, 18));

cm.Parameters["@From"].Value = From;

cm.Parameters.Add(new SqlParameter("@To", SqlDbType.NVarChar, 18));

cm.Parameters["@To"].Value = To;

cm.Parameters.Add(new SqlParameter("@Msg", SqlDbType.NVarChar, 800));

cm.Parameters["@Msg"].Value = Msg;

cm.Parameters.Add(new SqlParameter("@Result", SqlDbType.Int));

cm.Parameters["@Result"].Direction = ParameterDirection.Output;

cm.ExecuteNonQuery();

if (cm.Parameters["@Result"].Value.ToString() == "0") rStr = "sucess:false,err:'发表失败!n原因:接收者已经不存在!'";

else rStr = "success:true";

cm.Dispose();

}

catch (Exception e)

{

rStr = "sucess:false,err:'发表失败!原因n" + Js(e.Message) + "'";

}

cn.Close();

}

return rStr;

}

public static string ReadUser()

{

HttpRequest Request = HttpContext.Current.Request;

string rStr = "", UserId = Request.Form["uid"];

if (IsNull(UserId)) rStr += "success:false,err:'用户id丢失!'";

else

{

SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);

cn.Open();

try

{

SqlCommand cm = new SqlCommand("ajaxReadUser", cn);

cm.CommandType = CommandType.StoredProcedure;

cm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.NVarChar, 18));

cm.Parameters["@UserId"].Value = UserId;

string j = "";

SqlDataReader dr = cm.ExecuteReader();

while (dr.Read()) j += ",{id:'" + dr[0] + "',nn:'" + Js(dr[1].ToString()) + "'}";

dr.Close();

cm.Dispose();

rStr = "success:true,data:[" + (j == "" ? "" : j.Substring(1)) + "]";

}

catch (Exception e)

{

rStr = @"success:false,err:'发生如下错误n" + Js(e.Message) + "'";

}

cn.Close();

}

return rStr;

}

public static string Read()

{

HttpRequest Request = HttpContext.Current.Request;

string rStr = "";

string UserId = Request.Form["uid"], Key = Request.Form["key"];

if (IsNull(UserId) || IsNull(Key)) rStr = "success:false,err:'用户信息丢失!'";

else

{

SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);

cn.Open();

try

{

SqlCommand cm = new SqlCommand("ajaxRead", cn);

cm.CommandType = CommandType.StoredProcedure;

cm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.NVarChar, 18));

cm.Parameters["@UserId"].Value = UserId;

cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));

cm.Parameters["@UserKey"].Value = Key;

SqlDataReader dr = cm.ExecuteReader();

string j = "";

while (dr.Read()) j += ",'" + Js(dr[0].ToString()) + "'";

dr.Close();

cm.Dispose();

rStr = "success:true,data:[" + (j == "" ? "" : j.Substring(1)) + "]";

}

catch (Exception e)

{

rStr = "success:false,err:'发生以下错误" + Js(e.Message) + "'";

}

cn.Close();

}

return rStr;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有