Salle de discussion Ajax sans actualisation implémentée par ajax+asp.net+mssql, prend en charge l'éditeur Web HTML. Pour votre référence. Cependant, il y a un petit problème, c'est-à-dire que lors de l'utilisation de la touche de raccourci ctrl+enter pour envoyer des informations sous Firefox, si la fonction d'envoi n'est pas appelée avec un délai, la boîte de dialogue de téléchargement ff apparaîtra, ce qui est étrange.
Code JScriptif(e.ctrlKey&&e.keyCode==13){
e.preventDefault();
e.stopPropagation();
setTimeout("Showbo.Chat.send()",50);//Lorsque l'invite d'alerte est utilisée immédiatement dans ff, l'outil de téléchargement apparaît, ce qui est étrange.
renvoie faux ;}
},FAUX);
Pour accélérer les choses, des procédures stockées sont utilisées.
Veuillez consulter l'article suivant pour les versions asp et php
ajax+asp+mssql pas de salle de discussion actualisée
ajax+php+mssql pas de salle de discussion actualisée
Pour utiliser différentes pages dynamiques, modifiez simplement la valeur de la variable RequstUrl dans le fichier lib.js.
Téléchargement d'un échantillon complet
L'effet est le suivant
Il y a une limite de longueur de contenu, donc je ne publierai pas tout le code. Pour voir tout le code, veuillez télécharger l'exemple ou consulter l'article suivant.
ajax+asp.net+mssql pas de salle de discussion actualisée
Le code principal de C# est publié ci-dessous. Pour les autres versions, veuillez consulter le lien ci-dessus.
ajax.cs
Code C# utilisant le système ;
en utilisant System.Web ;
en utilisant System.Data ;
en utilisant System.Configuration ;
en utilisant System.Data.SqlClient ;
classe publique Ajax
{
bool statique privé IsNull (chaîne v)
{
if (v == null || v.Trim() == "") renvoie vrai ;
sinon, retourne faux ;
}
chaîne statique privée Js (chaîne v)
{
return v.Replace("'", "'");
}
chaîne statique publique Connexion()
{
Requête HttpRequest = HttpContext.Current.Request ;
chaîne rStr = "" ;
chaîne UserName = Request.Form["nn"];
si (IsNull (Nom d'utilisateur))
{
rStr = "success:false,err:'Le pseudo ne peut pas être vide !'";
}
sinon si (UserName.Length > 20)
{
rStr = "success:false,err:'Le pseudo ne peut pas dépasser 20 caractères !'";
}
autre
{
chaîne UserId = "", Clé = "" ;
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
essayer
{
SqlCommand cm = new SqlCommand("ajaxLogin", cn);
cm.CommandType = CommandType.StoredProcedure ;
cm.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 50));
cm.Parameters["@UserName"].Value = UserName;
//==========Paramètres de sortie
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();
Clé = cm.Parameters["@UserKey"].Value.ToString().Trim();
if (UserId == "-1") rStr = @"success:false,err:'Une erreur s'est produite, veuillez réessayer plus tard !'";
else if (UserId == "0") rStr = @"success:false,err:'Ce pseudo utilisateur existe déjà, veuillez modifier votre pseudo !'";
else rStr += "succès:true,UserId:'" + UserId + "',Key:'" + Key + "'";
cm.Dispose();
}
attraper (exception e)
{
rStr = @"success:false,err:'raison n" + Js(e.Message) + "'";
}
cn.Close();
}
retourner rStr ;
}
chaîne statique publique Déconnexion()
{
Requête HttpRequest = HttpContext.Current.Request ;
chaîne rStr = "", UserId = Request.Form["uid"], Key = Request.Form["key"];
if (IsNull(UserId) || IsNull(Key)) return "success:false,err:'Informations utilisateur perdues !'";
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
essayer
{
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 = Clé ;
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:'Les informations utilisateur n'existent pas !'";
sinon rStr="succès:true";
cm.Dispose();
}
attraper (exception e)
{
}
cn.Close();
retourner rStr ;
}
chaîne statique publique Say()
{
Requête HttpRequest = HttpContext.Current.Request ;
chaîne De = Request.Form["from"], To = Request.Form["to"]
, Clé = Request.Form["key"], Msg = Request.Form["ct"], rStr = "";
if (IsNull(From) || IsNull(Key) || IsNull(To) || IsNull(Msg)) rStr = "success:false,err:'Transfert d'informations incomplet !'";
autre
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
essayer
{
SqlCommand cm = new SqlCommand("ajaxSay", cn);
cm.CommandType = CommandType.StoredProcedure ;
cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Value = Clé ;
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:'Échec de la publication ! Raison : Le récepteur n'existe plus !'";
sinon rStr = "succès:true" ;
cm.Dispose();
}
attraper (exception e)
{
rStr = "sucess:false,err:'Échec de la publication ! Raison n" + Js(e.Message) + "'";
}
cn.Close();
}
retourner rStr ;
}
chaîne statique publique ReadUser()
{
Requête HttpRequest = HttpContext.Current.Request ;
chaîne rStr = "", UserId = Request.Form["uid"];
if (IsNull(UserId)) rStr += "success:false,err:'L'identifiant utilisateur est perdu !'";
autre
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
essayer
{
SqlCommand cm = new SqlCommand("ajaxReadUser", cn);
cm.CommandType = CommandType.StoredProcedure ;
cm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.NVarChar, 18));
cm.Parameters["@UserId"].Value = UserId;
chaîne 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)) + "]";
}
attraper (exception e)
{
rStr = @"success:false,err:'L'erreur suivante s'est produite n" + Js(e.Message) + "'";
}
cn.Close();
}
retourner rStr ;
}
chaîne statique publique Lire()
{
Requête HttpRequest = HttpContext.Current.Request ;
chaîne rStr = "" ;
chaîne UserId = Request.Form["uid"], Key = Request.Form["key"];
if (IsNull(UserId) || IsNull(Key)) rStr = "success:false,err:'Informations utilisateur perdues !'";
autre
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
essayer
{
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 = Clé ;
SqlDataReader dr = cm.ExecuteReader();
chaîne j = "" ;
while (dr.Read()) j += ,'" + Js(dr[0].ToString()) + "'";
dr.Close();
cm.Dispose();
rStr = "success:true,data:[" + (j == "" ? "" : j.Substring(1)) + "]";
}
attraper (exception e)
{
rStr = "success:false,err:'L'erreur suivante s'est produite" + Js(e.Message) + "'";
}
cn.Close();
}
retourner rStr ;
}