ajax+asp.net+mssql sem atualização da sala de bate-papo
Sala de bate-papo sem atualização Ajax implementada por ajax+asp.net+mssql, suporta editor web html. Para sua referência. Porém, há um pequeno problema, ou seja, ao utilizar a tecla de atalho ctrl+enter para enviar informações no Firefox, se a função de envio não for chamada com atraso, aparecerá a caixa de diálogo de download ff, o que é estranho.
Código JScriptif(e.ctrlKey&&e.keyCode==13){
e.preventDefault();
e.stopPropagation();
setTimeout("Showbo.Chat.send()",50);//Quando o prompt de alerta é usado imediatamente em ff, a ferramenta de download aparece, o que é estranho.
retornar falso;}
},falso);
Para acelerar as coisas, são usados procedimentos armazenados.
Por favor, consulte o seguinte artigo para versões asp e php
ajax+asp+mssql sem atualização da sala de bate-papo
ajax+php+mssql sem atualização da sala de bate-papo
Para usar diferentes páginas dinâmicas, basta alterar o valor da variável RequstUrl no arquivo lib.js.
Download completo da amostra
O efeito é o seguinte
Há um limite de comprimento de conteúdo, então não postarei todo o código. Para ver todo o código, baixe o exemplo ou veja o artigo a seguir.
ajax+asp.net+mssql sem atualização da sala de bate-papo
O código principal do C# está postado abaixo. Para outras versões, verifique o link acima.
ajax.cs
Sistema de uso de código C#;
usando System.Web;
usando System.Data;
usando System.Configuration;
usando System.Data.SqlClient;
classe pública Ajax
{
bool estático privado IsNull (string v)
{
if (v == null || v.Trim() == "") retornar verdadeiro;
caso contrário, retorne falso;
}
string estática privada Js (string v)
{
retornar v.Replace("'", "'");
}
string estática pública Login()
{
Solicitação HttpRequest = HttpContext.Current.Request;
string rStr = "";
string NomeUsuário = Request.Form["nn"];
if (IsNull (Nome de usuário))
{
rStr = "sucesso:false,err:'O apelido não pode estar vazio!'";
}
caso contrário, se (nome do usuário.Comprimento > 20)
{
rStr = "sucesso:false,err:'O apelido não pode exceder 20 caracteres!'";
}
outro
{
string UserId = "", Chave = "";
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
tentar
{
SqlCommand cm = new SqlCommand("ajaxLogin", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 50));
cm.Parameters["@NomeUsuário"].Valor = NomeUsuário;
//==========Parâmetros de saída
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();
Chave = cm.Parâmetros["@UserKey"].Value.ToString().Trim();
if (UserId == "-1") rStr = @"success:false,err:'Ocorreu um erro, tente novamente mais tarde!'";
senão if (UserId == "0") rStr = @"success:false,err:'Este apelido de usuário já existe, modifique seu apelido!'";
senão rStr += "sucesso:true,UserId:'" + UserId + "',Chave:'" + Chave + "'";
cm.Dispose();
}
pegar (Exceção e)
{
rStr = @"sucesso:falso,err:'motivo n" + Js(e.Message) + "'";
}
cn.Fechar();
}
retornar rStr;
}
string estática pública Logout()
{
Solicitação HttpRequest = HttpContext.Current.Request;
string rStr = "", UserId = Request.Form["uid"], Key = Request.Form["key"];
if (IsNull(UserId) || IsNull(Key)) return "sucesso:false,err:'Informações do usuário perdidas!'";
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
tentar
{
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"].Valor = Chave;
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:'As informações do usuário não existem!'";
senão rStr="sucesso:true";
cm.Dispose();
}
pegar (Exceção e)
{
}
cn.Fechar();
retornar rStr;
}
string estática pública Say()
{
Solicitação HttpRequest = HttpContext.Current.Request;
string De = Solicitação.Formulário["de"], Para = Solicitação.Formulário["para"]
, Chave = Request.Form["chave"], Msg = Request.Form["ct"], rStr = "";
if (IsNull(From) || IsNull(Key) || IsNull(To) || IsNull(Msg)) rStr = "sucesso:false,err:'Transferência de informações incompleta!'";
outro
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
tentar
{
SqlCommand cm = new SqlCommand("ajaxSay", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Valor = Chave;
cm.Parameters.Add(new SqlParameter("@From", SqlDbType.NVarChar, 18));
cm.Parâmetros["@From"].Valor = De;
cm.Parameters.Add(new SqlParameter("@To", SqlDbType.NVarChar, 18));
cm.Parâmetros["@To"].Valor = Para;
cm.Parameters.Add(new SqlParameter("@Msg", SqlDbType.NVarChar, 800));
cm.Parâmetros["@Msg"].Valor = Mensagem;
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:'Falha na publicação! Motivo: O receptor não existe mais!'";
senão rStr = "sucesso: verdadeiro";
cm.Dispose();
}
pegar (Exceção e)
{
rStr = "sucesso:false,err:'Falha na publicação! Motivo n" + Js(e.Message) + "'";
}
cn.Fechar();
}
retornar rStr;
}
string estática pública ReadUser()
{
Solicitação HttpRequest = HttpContext.Current.Request;
string rStr = "", UserId = Request.Form["uid"];
if (IsNull(UserId)) rStr += "sucesso:false,err:'ID do usuário foi perdido!'";
outro
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
tentar
{
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.Fechar();
cm.Dispose();
rStr = "sucesso:verdadeiro,dados:[" + (j == "" ? "" : j.Substring(1)) + "]";
}
pegar (Exceção e)
{
rStr = @"success:false,err:'Ocorreu o seguinte erro n" + Js(e.Message) + "'";
}
cn.Fechar();
}
retornar rStr;
}
string estática pública Read()
{
Solicitação HttpRequest = HttpContext.Current.Request;
string rStr = "";
string UserId = Request.Form["uid"], Key = Request.Form["key"];
if (IsNull(UserId) || IsNull(Key)) rStr = "sucesso:false,err:'Informações do usuário perdidas!'";
outro
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
tentar
{
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"].Valor = Chave;
SqlDataReader dr = cm.ExecuteReader();
string j = "";
while (dr.Read()) j += ",'" + Js(dr[0].ToString()) + "'";
dr.Fechar();
cm.Dispose();
rStr = "sucesso:verdadeiro,dados:[" + (j == "" ? "" : j.Substring(1)) + "]";
}
pegar (Exceção e)
{
rStr = "sucesso:false,err:'Ocorreu o seguinte erro" + Js(e.Message) + "'";
}
cn.Fechar();
}
retornar rStr;
}