Ajax-Chatroom ohne Aktualisierung, implementiert durch ajax+asp.net+mssql, unterstützt HTML-Webeditor. Als Referenz. Es gibt jedoch ein kleines Problem: Wenn Sie unter Firefox die Tastenkombination Strg + Eingabetaste zum Senden von Informationen verwenden und die Sendefunktion nicht verzögert aufgerufen wird, wird das ff-Download-Dialogfeld angezeigt, was seltsam ist.
JScript-Codeif(e.ctrlKey&&e.keyCode==13){
e.preventDefault();
e.stopPropagation();
setTimeout("Showbo.Chat.send()",50);//Wenn die Warnaufforderung sofort in ff verwendet wird, wird das Download-Tool angezeigt, was seltsam ist.
return false;}
},FALSCH);
Um die Abläufe zu beschleunigen, werden gespeicherte Prozeduren verwendet.
Bitte lesen Sie den folgenden Artikel für ASP- und PHP-Versionen
Ajax+ASP+MSSQL, keine Aktualisierung des Chatrooms
Ajax+php+mssql, keine Aktualisierung des Chatrooms
Um verschiedene dynamische Seiten zu verwenden, ändern Sie einfach den Wert der RequstUrl-Variablen in der Datei lib.js.
Vollständiger Beispiel-Download
Der Effekt ist wie folgt
Es gibt eine Begrenzung der Inhaltslänge, daher werde ich nicht den gesamten Code veröffentlichen. Um den gesamten Code zu sehen, laden Sie bitte das Beispiel herunter oder lesen Sie den folgenden Artikel.
ajax+asp.net+mssql, keine Aktualisierung des Chatrooms
Der Hauptcode von C# ist unten aufgeführt. Weitere Versionen finden Sie unter dem Link oben.
ajax.cs
C#-Codeusing System;
mit System.Web;
Verwenden von System.Data;
Verwenden von System.Configuration;
Verwenden von System.Data.SqlClient;
öffentliche Klasse Ajax
{
privater statischer Bool IsNull(string v)
{
if (v == null || v.Trim() == "") return true;
sonst gibt false zurück;
}
privater statischer String Js(string v)
{
return v.Replace("'", "'");
}
öffentliche statische Zeichenfolge Login()
{
HttpRequest Request = HttpContext.Current.Request;
string rStr = "";
string UserName = Request.Form["nn"];
if (IsNull(Benutzername))
{
rStr = "success:false,err:'Der Spitzname darf nicht leer sein!'";
}
sonst wenn (UserName.Length > 20)
{
rStr = "success:false,err:'Der Spitzname darf 20 Zeichen nicht überschreiten!'";
}
anders
{
string UserId = "", Key = "";
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
versuchen
{
SqlCommand cm = new SqlCommand("ajaxLogin", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 50));
cm.Parameters["@Benutzername"].Value = Benutzername;
//==========Ausgabeparameter
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:'Ein Fehler ist aufgetreten, bitte versuchen Sie es später noch einmal!'";
else if (UserId == "0") rStr = @"success:false,err:'Dieser Benutzername existiert bereits, bitte ändern Sie Ihren Benutzernamen!'";
else rStr += "success:true,UserId:'" + UserId + "',Key:'" + Key + "'";
cm.Dispose();
}
Catch (Ausnahme e)
{
rStr = @"success:false,err:'reason n" + Js(e.Message) + "'";
}
cn.Close();
}
return rStr;
}
öffentliche statische Zeichenfolge 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:'Benutzerinformationen verloren!'";
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
versuchen
{
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 = Schlüssel;
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:'Benutzerinformationen sind nicht vorhanden!'";
else rStr="success:true";
cm.Dispose();
}
Catch (Ausnahme e)
{
}
cn.Close();
return rStr;
}
öffentliche statische Zeichenfolge 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:'Unvollständige Informationsübertragung!'";
anders
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
versuchen
{
SqlCommand cm = new SqlCommand("ajaxSay", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Value = Schlüssel;
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:'Veröffentlichung fehlgeschlagen! Grund: Der Empfänger existiert nicht mehr!'";
else rStr = "success:true";
cm.Dispose();
}
Catch (Ausnahme e)
{
rStr = "sucess:false,err:'Veröffentlichung fehlgeschlagen! Grund n" + Js(e.Message) + "'";
}
cn.Close();
}
return rStr;
}
öffentliche statische Zeichenfolge ReadUser()
{
HttpRequest Request = HttpContext.Current.Request;
string rStr = "", UserId = Request.Form["uid"];
if (IsNull(UserId)) rStr += "success:false,err:'Benutzer-ID ist verloren!'";
anders
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
versuchen
{
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 (Ausnahme e)
{
rStr = @"success:false,err:'Der folgende Fehler ist aufgetreten n" + Js(e.Message) + "'";
}
cn.Close();
}
return rStr;
}
öffentliche statische Zeichenfolge 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:'Benutzerinformationen verloren!'";
anders
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
versuchen
{
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 = Schlüssel;
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 (Ausnahme e)
{
rStr = "success:false,err:'Der folgende Fehler ist aufgetreten" + Js(e.Message) + "'";
}
cn.Close();
}
return rStr;
}