Sala de chat Ajax sin actualización implementada por ajax+asp.net+mssql, compatible con el editor web html. Para su referencia. Sin embargo, hay un pequeño problema, es decir, cuando se usa la tecla de acceso directo Ctrl + Enter para enviar información en Firefox, si la función de envío no se llama con retraso, aparecerá el cuadro de diálogo de descarga ff, lo cual es extraño.
Código JScriptif(e.ctrlKey&&e.keyCode==13){
e.preventDefault();
e.stopPropagation();
setTimeout("Showbo.Chat.send()",50);// Cuando el mensaje de alerta se usa inmediatamente en ff, aparece la herramienta de descarga, lo cual es extraño.
devolver falso;}
},FALSO);
Para acelerar las cosas, se utilizan procedimientos almacenados.
Consulte el siguiente artículo para conocer las versiones de asp y php.
ajax+asp+mssql sin actualización de la sala de chat
ajax+php+mssql sin actualización de la sala de chat
Para usar diferentes páginas dinámicas, simplemente cambie el valor de la variable RequstUrl en el archivo lib.js.
Descarga de muestra completa
El efecto es el siguiente
Hay un límite de longitud del contenido, por lo que no publicaré todo el código. Para ver todo el código, descargue el ejemplo o vea el siguiente artículo.
ajax+asp.net+mssql sin actualización de la sala de chat
El código principal de C# se publica a continuación. Para otras versiones, consulte el enlace de arriba.
ajax.cs
Sistema de uso de código C#;
usando System.Web;
usando System.Data;
usando System.Configuration;
usando System.Data.SqlClient;
clase pública Ajax
{
bool estático privado IsNull (cadena v)
{
si (v == null || v.Trim() == "") devuelve verdadero;
de lo contrario devolverá falso;
}
cadena estática privada Js (cadena v)
{
return v.Replace("'", "'");
}
cadena estática pública Iniciar sesión()
{
Solicitud HttpRequest = HttpContext.Current.Request;
cadena rStr = "";
cadena Nombre de usuario = Solicitud.Form["nn"];
si (IsNull(Nombre de usuario))
{
rStr = "success:false,err:'¡El apodo no puede estar vacío!'";
}
de lo contrario si (Nombre de usuario.Longitud > 20)
{
rStr = "success:false,err:'¡El apodo no puede exceder los 20 caracteres!'";
}
demás
{
cadena UserId = "", Clave = "";
SqlConnection cn = nueva SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
intentar
{
SqlCommand cm = nuevo SqlCommand("ajaxLogin", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 50));
cm.Parameters["@UserName"].Valor = Nombre de usuario;
//==========Parámetros de salida
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();
Clave = cm.Parameters["@UserKey"].Value.ToString().Trim();
if (UserId == "-1") rStr = @"success:false,err:'Se produjo un error, ¡inténtalo de nuevo más tarde!'";
else if (UserId == "0") rStr = @"success:false,err:'Este apodo de usuario ya existe, ¡modifique su apodo!'";
else rStr += "éxito: verdadero, ID de usuario:'" + ID de usuario + "', Clave:'" + Clave + "'";
cm.Dispose();
}
captura (Excepción e)
{
rStr = @"success:false,err:'razón n" + Js(e.Message) + "'";
}
cn.Cerrar();
}
devolver rStr;
}
cadena estática pública Cerrar sesión()
{
Solicitud HttpRequest = HttpContext.Current.Request;
cadena rStr = "", UserId = Request.Form["uid"], Key = Request.Form["key"];
if (IsNull(UserId) || IsNull(Key)) return "success:false,err:'¡Información del usuario perdida!'";
SqlConnection cn = nueva SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
intentar
{
SqlCommand cm = nuevo SqlCommand("ajaxLogout", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.NVarChar, 18));
cm.Parameters["@UserId"].Valor = UserId;
cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Valor = Clave;
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:'¡La información del usuario no existe!'";
else rStr="éxito:verdadero";
cm.Dispose();
}
captura (Excepción e)
{
}
cn.Cerrar();
devolver rStr;
}
cadena estática pública decir()
{
Solicitud HttpRequest = HttpContext.Current.Request;
cadena Desde = Solicitud.Form["desde"], Hasta = Solicitud.Form["a"]
, Clave = Request.Form["key"], Msg = Request.Form["ct"], rStr = "";
if (IsNull(From) || IsNull(Key) || IsNull(To) || IsNull(Msg)) rStr = "success:false,err:'¡Transferencia de información incompleta!'";
demás
{
SqlConnection cn = nueva SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
intentar
{
SqlCommand cm = nuevo SqlCommand("ajaxSay", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Valor = Clave;
cm.Parameters.Add(new SqlParameter("@From", SqlDbType.NVarChar, 18));
cm.Parameters["@From"].Valor = Desde;
cm.Parameters.Add(new SqlParameter("@To", SqlDbType.NVarChar, 18));
cm.Parameters["@To"].Valor = Para;
cm.Parameters.Add(new SqlParameter("@Msg", SqlDbType.NVarChar, 800));
cm.Parameters["@Msg"].Valor = Mensaje;
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:'¡Error en la publicación! Motivo: ¡El receptor ya no existe!'";
else rStr = "éxito: verdadero";
cm.Dispose();
}
captura (Excepción e)
{
rStr = "sucess:false,err:'¡Error en la publicación! Razón n" + Js(e.Message) + "'";
}
cn.Cerrar();
}
devolver rStr;
}
cadena estática pública ReadUser()
{
Solicitud HttpRequest = HttpContext.Current.Request;
cadena rStr = "", UserId = Request.Form["uid"];
if (IsNull(UserId)) rStr += "success:false,err:'¡La identificación del usuario se perdió!'";
demás
{
SqlConnection cn = nueva SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
intentar
{
SqlCommand cm = nuevo SqlCommand("ajaxReadUser", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.NVarChar, 18));
cm.Parameters["@UserId"].Valor = UserId;
cadena j = "";
SqlDataReader dr = cm.ExecuteReader();
while (dr.Read()) j += ",{id:'" + dr[0] + "',nn:'" + Js(dr[1].ToString()) + "'}";
dr.Cerrar();
cm.Dispose();
rStr = "éxito: verdadero, datos: [" + (j == "" ? "" : j.Substring(1)) + "]";
}
captura (Excepción e)
{
rStr = @"success:false,err:'Se produjo el siguiente error n" + Js(e.Message) + "'";
}
cn.Cerrar();
}
devolver rStr;
}
cadena estática pública Leer()
{
Solicitud HttpRequest = HttpContext.Current.Request;
cadena rStr = "";
cadena UserId = Request.Form["uid"], Clave = Request.Form["key"];
if (IsNull(UserId) || IsNull(Key)) rStr = "success:false,err:'¡Información del usuario perdida!'";
demás
{
SqlConnection cn = nueva SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
intentar
{
SqlCommand cm = nuevo SqlCommand("ajaxRead", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.NVarChar, 18));
cm.Parameters["@UserId"].Valor = UserId;
cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Valor = Clave;
SqlDataReader dr = cm.ExecuteReader();
cadena j = "";
mientras (dr.Read()) j += ",'" + Js(dr[0].ToString()) + "'";
dr.Cerrar();
cm.Dispose();
rStr = "éxito: verdadero, datos: [" + (j == "" ? "" : j.Substring(1)) + "]";
}
captura (Excepción e)
{
rStr = "success:false,err:'Se produjo el siguiente error" + Js(e.Message) + "'";
}
cn.Cerrar();
}
devolver rStr;
}