غرفة دردشة Ajax غير قابلة للتحديث تم تنفيذها بواسطة ajax+asp.net+mssql، وتدعم محرر الويب بتنسيق html. للرجوع اليها. ومع ذلك، هناك مشكلة صغيرة، وهي أنه عند استخدام مفتاح الاختصار ctrl+enter لإرسال معلومات ضمن Firefox، إذا لم يتم استدعاء وظيفة الإرسال مع تأخير، فسينبثق مربع حوار تنزيل ff، وهو أمر غريب.
كود JScriptif(e.ctrlKey&&e.keyCode==13){
e.preventDefault();
e.stopPropagation();
setTimeout("Showbo.Chat.send()",50);// عند استخدام موجه التنبيه فورًا في ff، تنبثق أداة التنزيل، وهو أمر غريب.
إرجاع خطأ؛}
}،خطأ شنيع)؛
لتسريع الأمور، يتم استخدام الإجراءات المخزنة.
الرجاء مراجعة المقالة التالية للتعرف على إصدارات asp وphp
ajax+asp+mssql لا توجد غرفة دردشة محدثة
ajax+php+mssql لا توجد غرفة دردشة متجددة
لاستخدام صفحات ديناميكية مختلفة، ما عليك سوى تغيير قيمة المتغير RequstUrl في ملف lib.js.
تحميل العينة كاملة
التأثير على النحو التالي
هناك حد أقصى لطول المحتوى، لذا لن أقوم بنشر كافة التعليمات البرمجية لرؤية جميع التعليمات البرمجية، يرجى تنزيل المثال أو الاطلاع على المقالة التالية.
ajax+asp.net+mssql لا توجد غرفة دردشة محدثة
الكود الرئيسي لـ C# منشور أدناه. بالنسبة للإصدارات الأخرى، يرجى التحقق من الرابط أعلاه.
ajax.cs
استخدام كود C# System؛
باستخدام System.Web؛
باستخدام System.Data؛
باستخدام System.Configuration؛
باستخدام System.Data.SqlClient؛
الطبقة العامة اياكس
{
المنطق المنطقي الثابت الخاص IsNull(سلسلة v)
{
if (v == null || v.Trim() == "") return true;
وإلا يعود كاذبا؛
}
سلسلة ثابتة خاصة Js (سلسلة v)
{
return v.Replace("'", "'");
}
تسجيل الدخول للسلسلة الثابتة العامة ()
{
HttpRequest Request = HttpContext.Current.Request;
سلسلة rStr = "";
سلسلة اسم المستخدم = Request.Form["nn"];
إذا (IsNull(اسم المستخدم))
{
rStr = "success:false,err:'لا يمكن أن يكون اللقب فارغًا!'";
}
وإلا إذا (اسم المستخدم.الطول > 20)
{
rStr = "success:false,err:'الاسم المستعار لا يمكن أن يتجاوز 20 حرفًا!'";
}
آخر
{
سلسلة معرف المستخدم = ""، المفتاح = ""؛
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
يحاول
{
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();
}
قبض (الاستثناء ه)
{
rStr = @"success:false,err:'reason n" + Js(e.Message) + "'";
}
cn.Close();
}
إرجاع rStr؛
}
تسجيل الخروج من السلسلة الثابتة العامة ()
{
HttpRequest Request = HttpContext.Current.Request;
سلسلة rStr = ""، معرف المستخدم = 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();
يحاول
{
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();
}
قبض (الاستثناء ه)
{
}
cn.Close();
إرجاع rStr؛
}
سلسلة ثابتة عامة قل ()
{
HttpRequest Request = HttpContext.Current.Request;
سلسلة من = Request.Form["from"]، إلى = 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:'نقل المعلومات غير مكتمل!'";
آخر
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
يحاول
{
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:'فشل النشر! السبب: المتلقي لم يعد موجودًا!'";
else rStr = "success:true";
cm.Dispose();
}
قبض (الاستثناء ه)
{
rStr = "sucess:false,err:'فشل النشر! السبب n" + Js(e.Message) + "'";
}
cn.Close();
}
إرجاع rStr؛
}
سلسلة ثابتة عامة ReadUser ()
{
HttpRequest Request = HttpContext.Current.Request;
string rStr = ""، UserId = Request.Form["uid"];
if (IsNull(UserId)) rStr += "success:false,err:'معرف المستخدم مفقود!'";
آخر
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
يحاول
{
SqlCommand cm = new SqlCommand("ajaxReadUser", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.NVarChar, 18));
cm.Parameters["@UserId"].Value = UserId;
سلسلة ي = ""؛
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)) + "]";
}
قبض (الاستثناء ه)
{
rStr = @"success:false,err:'حدث الخطأ التالي n" + Js(e.Message) + "'";
}
cn.Close();
}
إرجاع rStr؛
}
قراءة سلسلة ثابتة عامة ()
{
HttpRequest Request = HttpContext.Current.Request;
سلسلة rStr = "";
سلسلة معرف المستخدم = Request.Form["uid"]، Key = Request.Form["key"];
if (IsNull(UserId) || IsNull(Key)) rStr = "success:false,err:'تم فقدان معلومات المستخدم!'";
آخر
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.Open();
يحاول
{
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();
سلسلة ي = ""؛
while (dr.Read()) j += ",'" + Js(dr[0].ToString()) + "'";
dr.Close();
cm.Dispose();
rStr = "success:true,data:[" + (j == "" ? "" : j.Substring(1)) + "]";
}
قبض (الاستثناء ه)
{
rStr = "success:false,err:'حدث الخطأ التالي" + Js(e.Message) + "'";
}
cn.Close();
}
إرجاع rStr؛
}