ajax+asp.net+mssql로 구현된 Ajax 새로 고치지 않는 채팅방은 html 웹 편집기를 지원합니다. 당신의 참고를 위해. 그런데 작은 문제가 있습니다. 즉, Firefox에서 단축키 Ctrl+Enter를 사용하여 정보를 보낼 때 전송 기능이 지연되어 호출되지 않으면 ff 다운로드 대화 상자가 나타나는데 이것이 이상합니다.
JScript codeif(e.ctrlKey&&e.keyCode==13){
e.preventDefault();
e.stopPropagation();
setTimeout("Showbo.Chat.send()",50);//ff에서 경고 프롬프트를 즉시 사용하면 다운로드 도구가 팝업되는데 이상합니다.
거짓을 반환;}
},거짓);
작업 속도를 높이기 위해 저장 프로시저가 사용됩니다.
asp 및 php 버전은 다음 문서를 참조하세요.
ajax+asp+mssql 새로 고침 없음 채팅방
ajax+php+mssql 새로 고침 없음 채팅방
다른 동적 페이지를 사용하려면 lib.js 파일에서 RequstUrl 변수 값을 변경하면 됩니다.
전체 샘플 다운로드
효과는 다음과 같습니다
콘텐츠 길이 제한이 있으므로 모든 코드를 게시하지는 않겠습니다. 모든 코드를 보려면 예제를 다운로드하거나 다음 기사를 참조하세요.
ajax+asp.net+mssql 새로 고침 없음 채팅방
C#의 주요 코드는 아래에 게시되어 있습니다. 다른 버전에 대해서는 위의 링크를 확인하세요.
아약스.cs
C# 코드사용 시스템;
System.Web 사용;
System.Data 사용;
System.Configuration 사용;
System.Data.SqlClient 사용;
공개 클래스 Ajax
{
개인 정적 bool IsNull(string v)
{
if (v == null || v.Trim() == "") true를 반환합니다.
그렇지 않으면 false를 반환합니다.
}
개인 정적 문자열 Js(문자열 v)
{
return v.Replace("'", "'");
}
공개 정적 문자열 로그인()
{
HttpRequest 요청 = HttpContext.Current.Request;
문자열 rStr = "";
string UserName = Request.Form["nn"];
if (IsNull(사용자 이름))
{
rStr = "success:false,err:'닉네임은 비워둘 수 없습니다!'";
}
그렇지 않은 경우(UserName.Length > 20)
{
rStr = "success:false,err:'닉네임은 20자를 초과할 수 없습니다!'";
}
또 다른
{
string UserId = "", 키 = "";
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.열기();
노력하다
{
SqlCommand cm = new SqlCommand("ajaxLogin", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 50));
cm.Parameters["@UserName"].Value = 사용자 이름;
//==========출력 매개변수
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 += "성공:true,UserId:'" + UserId + "',Key:'" + Key + "'";
cm.Dispose();
}
잡기 (예외 e)
{
rStr = @"성공:false,err:'이유 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 = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.열기();
노력하다
{
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 = 키;
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="성공:true";
cm.Dispose();
}
잡기 (예외 e)
{
}
cn.닫기();
rStr을 반환합니다.
}
공개 정적 문자열 Say()
{
HttpRequest 요청 = 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:'정보 전송이 완료되지 않았습니다!'";
또 다른
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.열기();
노력하다
{
SqlCommand cm = new SqlCommand("ajaxSay", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserKey", SqlDbType.NVarChar, 5));
cm.Parameters["@UserKey"].Value = 키;
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 = 대상;
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 = "성공:true";
cm.Dispose();
}
잡기 (예외 e)
{
rStr = "성공:false,err:'게시 실패! 이유 n" + Js(e.Message) + "'";
}
cn.닫기();
}
rStr을 반환합니다.
}
공개 정적 문자열 ReadUser()
{
HttpRequest 요청 = HttpContext.Current.Request;
string rStr = "", UserId = Request.Form["uid"];
if (IsNull(UserId)) rStr += "success:false,err:'사용자 ID가 손실되었습니다!'";
또 다른
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.열기();
노력하다
{
SqlCommand cm = new SqlCommand("ajaxReadUser", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@UserId", SqlDbType.NVarChar, 18));
cm.Parameters["@UserId"].Value = UserId;
문자열 j = "";
SqlDataReader dr = cm.ExecuteReader();
while (dr.Read()) j += ",{id:'" + dr[0] + "',nn:'" + Js(dr[1].ToString()) + "'}";
dr.닫기();
cm.Dispose();
rStr = "성공: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 = new SqlConnection(ConfigurationSettings.AppSettings["db"]);
cn.열기();
노력하다
{
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 = 키;
SqlDataReader dr = cm.ExecuteReader();
문자열 j = "";
while (dr.Read()) j += ",'" + Js(dr[0].ToString()) + "'";
dr.닫기();
cm.Dispose();
rStr = "성공:true,데이터:[" + (j == "" ? "" : j.Substring(1)) + "]";
}
잡기 (예외 e)
{
rStr = "success:false,err:'다음 오류가 발생했습니다." + Js(e.Message) + "'";
}
cn.닫기();
}
rStr을 반환합니다.
}