WEB开发网
开发学院WEB开发Ajax ajax+asp.net+mssql无刷新聊天室 阅读

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

 2010-01-07 11:19:32 来源:WEB开发网   
核心提示:Ajax+asp.net+mssql无刷新聊天室ajax+asp.net+mssql实现的ajax无刷新聊天室,支持html web编辑器,ajax+asp.net+mssql无刷新聊天室,供大家参考下,不过有个小问题,要看全部代码请下载示例或者查看下面这篇文章 ajax+asp.net+mssql无刷新聊天室 下面贴
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;
  }



Tags:ajax asp net

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接