配色: 字号:
Ajax+asp
2016-08-31 | 阅:  转:  |  分享 
  
Ajax+asp.net+mssql无刷新聊天室



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



JScriptcodeif(e.ctrlKey&&e.keyCode==13){

e.PReventDefault();

e.stopPropagation();

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

returnfalse;}

},false);







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



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



ajax+asp+mssql无刷新聊天室

ajax+php+mssql无刷新聊天室





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



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

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





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



ajax.cs

C#codeusingSystem;

usingSystem.Web;

usingSystem.Data;

usingSystem.Configuration;

usingSystem.Data.SqlClient;

publicclassAjax

{



privatestaticboolIsNull(stringv)

{

if(v==null||v.Trim()=="")returntrue;

elsereturnfalse;

}



privatestaticstringJs(stringv)

{

returnv.Replace("''","''");

}



publicstaticstringLogin()

{

HttpRequestRequest=HttpContext.Current.Request;

stringrStr="";



stringUserName=Request.Form["nn"];

if(IsNull(UserName))

{

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

}

elseif(UserName.Length>20)

{

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

}

else

{

stringUserId="",Key="";

SqlConnectioncn=newSqlConnection(ConfigurationSettings.AppSettings["db"]);

cn.Open();

try

{

SqlCommandcm=newSqlCommand("ajaxLogin",cn);

cm.CommandType=CommandType.StoredProcedure;

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

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

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

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

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

cm.Parameters.Add(newSqlParameter("@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:''发生错误,请稍后再试!''";

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

elserStr+="success:true,UserId:''"+UserId+"'',Key:''"+Key+"''";

cm.Dispose();

}

catch(Exceptione)

{

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

}

cn.Close();

}



returnrStr;

}



publicstaticstringLogout()

{

HttpRequestRequest=HttpContext.Current.Request;

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

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



SqlConnectioncn=newSqlConnection(ConfigurationSettings.AppSettings["db"]);

cn.Open();

try

{

SqlCommandcm=newSqlCommand("ajaxLogout",cn);

cm.CommandType=CommandType.StoredProcedure;

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

cm.Parameters["@UserId"].www.wang027.comValue=UserId;

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

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

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

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



cm.ExecuteNonQuery();



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

elserStr="success:true";

cm.Dispose();

}

catch(Exceptione)

{



}

cn.Close();

returnrStr;

}



publicstaticstringSay()

{

HttpRequestRequest=HttpContext.Current.Request;

stringFrom=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

{

SqlConnectioncn=newSqlConnection(ConfigurationSettings.AppSettings["db"]);

cn.Open();

try

{

SqlCommandcm=newSqlCommand("ajaxSay",cn);

cm.CommandType=CommandType.StoredProcedure;

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

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

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

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

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

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

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

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

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

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

cm.ExecuteNonQuery();

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

elserStr="success:true";

cm.Dispose();

}

catch(Exceptione)

{

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

}

cn.Close();

}

returnrStr;

}



publicstaticstringReadUser()

{

HttpRequestRequest=HttpContext.Current.Request;

stringrStr="",UserId=Request.Form["uid"];

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

else

{

SqlConnectioncn=newSqlConnection(ConfigurationSettings.AppSettings["db"]);

cn.Open();

try

{

SqlCommandcm=newSqlCommand("ajaxReadUser",cn);

cm.CommandType=CommandType.StoredProcedure;

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

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

stringj="";

SqlDataReaderdr=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(Exceptione)

{

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

}

cn.Close();

}

returnrStr;

}



publicstaticstringRead()

{

HttpRequestRequest=HttpContext.Current.Request;

stringrStr="";

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

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

else

{

SqlConnectioncn=newSqlConnection(ConfigurationSettings.AppSettings["db"]);

cn.Open();

try

{

SqlCommandcm=newSqlCommand("ajaxRead",cn);

cm.CommandType=CommandType.StoredProcedure;

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

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

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

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

SqlDataReaderdr=cm.ExecuteReader();

stringj="";

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

dr.Close();

cm.Dispose();

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

}

catch(Exceptione)

{

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

}

cn.Close();

}

returnrStr;

}

献花(0)
+1
(本文系thedust79首藏)