ห้องสนทนาแบบไม่รีเฟรช 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# ไว้ด้านล่าง สำหรับเวอร์ชันอื่นๆ โปรดตรวจสอบลิงก์ด้านบน
อาแจ็กซ์.ซีเอส
ระบบการใช้รหัส C #;
ใช้ System.Web;
ใช้ System.Data;
โดยใช้ระบบการกำหนดค่า;
โดยใช้ System.Data.SqlClient;
อาแจ็กซ์คลาสสาธารณะ
-
บูลคงที่ส่วนตัว IsNull (สตริง v)
-
ถ้า (v == null || v.Trim() == "") คืนค่าจริง;
มิฉะนั้นจะส่งคืนเท็จ
-
Js สตริงคงที่ส่วนตัว (สตริง v)
-
กลับ v.แทนที่("'", "'");
-
เข้าสู่ระบบสตริงสาธารณะคงที่ ()
-
คำขอ HttpRequest = HttpContext.Current.Request;
สตริง rStr = "";
string UserName = Request.Form["nn"];
ถ้า (IsNull (ชื่อผู้ใช้))
-
rStr = "success:false,err:'ชื่อเล่นไม่สามารถเว้นว่างได้!'";
-
อย่างอื่นถ้า (UserName.Length > 20)
-
rStr = "success:false,err:'ชื่อเล่นต้องมีความยาวไม่เกิน 20 ตัวอักษร!'";
-
อื่น
-
สตริง UserId = "", Key = "";
SqlConnection cn = SqlConnection ใหม่ (ConfigurationSettings.AppSettings["db"]);
cn.เปิด();
พยายาม
-
SqlCommand cm = new SqlCommand("ajaxLogin", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(SqlParameter ใหม่("@ชื่อผู้ใช้", SqlDbType.NVarChar, 50));
cm.Parameters["@UserName"].Value = ชื่อผู้ใช้;
//==========พารามิเตอร์เอาต์พุต
cm.Parameters.Add(SqlParameter ใหม่("@ UserId", SqlDbType.NVarChar, 18));
cm.Parameters["@UserId"].Direction = ParameterDirection.Output;
cm.Parameters.Add(SqlParameter ใหม่("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Direction = ParameterDirection.Output;
cm.ExecuteNonQuery();
UserId = cm.Parameters["@UserId"].Value.ToString().Trim();
คีย์ = cm.Parameters["@UserKey"].Value.ToString().Trim();
if (UserId == "-1") rStr = @"success:false,err:'เกิดข้อผิดพลาด โปรดลองอีกครั้งในภายหลัง!'";
อย่างอื่นถ้า (UserId == "0") rStr = @"success:false,err:'ชื่อเล่นนี้มีอยู่แล้ว โปรดแก้ไขชื่อเล่นของคุณ!'";
อย่างอื่น rStr += "success:true,UserId:'" + UserId + "',Key:'" + Key + "'";
ซม.ทิ้ง();
-
จับ (ยกเว้น e)
-
rStr = @"success:false,err:'reason n" + Js(e.Message) + "'";
-
cn.ปิด();
-
กลับrStr;
-
สาธารณะสตริงคงที่ออกจากระบบ ()
-
คำขอ HttpRequest = HttpContext.Current.Request;
string rStr = "", UserId = Request.Form["uid"], Key = Request.Form["key"];
if (IsNull(UserId) || IsNull(Key)) return "success:false,err:'ข้อมูลผู้ใช้สูญหาย!'";
SqlConnection cn = SqlConnection ใหม่ (ConfigurationSettings.AppSettings["db"]);
cn.เปิด();
พยายาม
-
SqlCommand cm = new SqlCommand("ajaxLogout", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(SqlParameter ใหม่("@ UserId", SqlDbType.NVarChar, 18));
cm.Parameters["@UserId"].Value = UserId;
cm.Parameters.Add(SqlParameter ใหม่("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Value = คีย์;
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:'ไม่มีข้อมูลผู้ใช้!'";
อื่น rStr = "ความสำเร็จ: จริง";
ซม.ทิ้ง();
-
จับ (ยกเว้น e)
-
-
cn.ปิด();
กลับrStr;
-
สตริงคงที่สาธารณะ Say()
-
คำขอ HttpRequest = HttpContext.Current.Request;
string จาก = Request.Form["from"], To = Request.Form["to"]
, Key = Request.Form["key"], Msg = Request.Form["ct"], rStr = "";
if (IsNull (จาก) || IsNull (คีย์) || IsNull (ถึง) || IsNull (Msg)) rStr = "success:false, err:'การถ่ายโอนข้อมูลไม่สมบูรณ์!'";
อื่น
-
SqlConnection cn = SqlConnection ใหม่ (ConfigurationSettings.AppSettings["db"]);
cn.เปิด();
พยายาม
-
SqlCommand cm = new SqlCommand("ajaxSay", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(SqlParameter ใหม่("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Value = คีย์;
cm.Parameters.Add(SqlParameter ใหม่("@จาก", SqlDbType.NVarChar, 18));
cm.Parameters["@From"].Value = จาก;
cm.Parameters.Add(SqlParameter ใหม่("@To", SqlDbType.NVarChar, 18));
cm.Parameters["@To"].Value = ถึง;
cm.Parameters.Add(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:'Publishing failed! เหตุผล: ผู้รับไม่มีอยู่แล้ว!'";
rStr อื่น = "ความสำเร็จ: จริง";
ซม.ทิ้ง();
-
จับ (ยกเว้น e)
-
rStr = "sucess:false,err:'การเผยแพร่ล้มเหลว! เหตุผล n" + Js(e.Message) + "'";
-
cn.ปิด();
-
กลับrStr;
-
สตริงสาธารณะแบบคงที่ ReadUser()
-
คำขอ HttpRequest = HttpContext.Current.Request;
สตริง rStr = "", UserId = Request.Form ["uid"];
if (IsNull(UserId)) rStr += "success:false,err:'รหัสผู้ใช้หายไป!'";
อื่น
-
SqlConnection cn = SqlConnection ใหม่ (ConfigurationSettings.AppSettings["db"]);
cn.เปิด();
พยายาม
-
SqlCommand cm = new SqlCommand("ajaxReadUser", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(SqlParameter ใหม่("@ UserId", SqlDbType.NVarChar, 18));
cm.Parameters["@UserId"].Value = UserId;
สตริงเจ = "";
SqlDataReader dr = cm.ExecuteReader();
ในขณะที่ (dr.Read()) j += ",{id:'" + dr[0] + "',nn:'" + Js(dr[1].ToString()) + "'}";
ดร.ปิด();
ซม.ทิ้ง();
rStr = "success:true,ข้อมูล:[" + (j == "" ? "" : j.Substring(1)) + "]";
-
จับ (ยกเว้น e)
-
rStr = @"success:false,err:'เกิดข้อผิดพลาดต่อไปนี้ n" + Js(e.Message) + "'";
-
cn.ปิด();
-
กลับrStr;
-
สตริงคงที่สาธารณะอ่าน ()
-
คำขอ HttpRequest = HttpContext.Current.Request;
สตริง rStr = "";
string UserId = Request.Form["uid"], Key = Request.Form["key"];
if (IsNull(UserId) || IsNull(Key)) rStr = "success:false,err:'ข้อมูลผู้ใช้สูญหาย!'";
อื่น
-
SqlConnection cn = SqlConnection ใหม่ (ConfigurationSettings.AppSettings["db"]);
cn.เปิด();
พยายาม
-
SqlCommand cm = new SqlCommand("ajaxRead", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(SqlParameter ใหม่("@ UserId", SqlDbType.NVarChar, 18));
cm.Parameters["@UserId"].Value = UserId;
cm.Parameters.Add(SqlParameter ใหม่("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Value = คีย์;
SqlDataReader dr = cm.ExecuteReader();
สตริงเจ = "";
ในขณะที่ (dr.Read()) j += ",'" + Js(dr[0].ToString()) + "'";
ดร.ปิด();
ซม.ทิ้ง();
rStr = "success:true,ข้อมูล:[" + (j == "" ? "" : j.Substring(1)) + "]";
-
จับ (ยกเว้น e)
-
rStr = "success:false,err:'เกิดข้อผิดพลาดต่อไปนี้" + Js(e.Message) + "'";
-
cn.ปิด();
-
กลับrStr;
-