//
技术:------在c#平台企业版中应用异步JavaScript技术和XML(AJAX)
// 问题:实现在文本框失去焦点时验证用户名是否存在.
// 解决方案:
// ---------1.在JS文件里面写==异步JAVASCRIPT==的方法
// ---------2.在c#语言的web程序中添加一个 .ashx文件(一般处理程序)
// ---------3.在文本框的失去焦点属性(onblur)引用第二步中的方法
// ***************************js文件***********************
/**/ /// <summary>
/// 异步JAVASCRIPT[无刷新验证AJAX]
/// (参考资料网址)http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/
/// http://www.nirvanastudio.org/java/ajax-with-j2ee.html
/// </summary>
function getData()
... {
var idField = document.getElementById("txtUserName");//获取页面用户输入的值--txtUserName 为页面文本框的id
var url = "Validator.ashx?VCode=" + escape(idField.value);//你要请求的资源
//第一步:声明XMLHttpRequest对象(此例为:[XMLHttpRequestObject]),它是AJAX的核心
var XMLHttpRequestObject = false;
//第二步:获取XMLHttpRequest对象
if (window.XMLHttpRequest) ...{
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) ...{
XMLHttpRequestObject = new
ActiveXObject("Microsoft.XMLHTTP");
}
//第三步:通过这个对象的OPEN方法向服务发送请求
// 该函数声明为XMLHttpRequest.open(String method, String URL, boolean asynchronous);
// method是请求的方式,可以为GET和POST URL是你要请求的资源 asynchronous是布尔类型,为true表示交互设置为异步
if(XMLHttpRequestObject) ...{
XMLHttpRequestObject.open("GET", url,true);
//第四步:由于将交互设置为异步方式,因此要为指定一个回调函数[此处的callback()]:剩下的事就交给回调函数处理了。
// 判断是否已经调用了而且readyState是4,表示XMLHttpRequest的调用已经完成。HTTP状态代码200表示一个成功的HTTP交互。
XMLHttpRequestObject.onreadystatechange = function callback()
...{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) ...{
//显示提示信息的地方--lblInfo为你页面上显示信息的标签
document.getElementById("lblInfo").innerText = XMLHttpRequestObject.responseText;
delete XMLHttpRequestObject;
XMLHttpRequestObject = null;
}
}
//第五步:调用send()(参数是空或是null)将会发起一次请求,对于GET方式的请求,两次同样的请求将会得到相同的结果
XMLHttpRequestObject.send(null);
}
}
// ****************.ashx文件*************************
<% @ WebHandler Language = " C# " Class = " Handler " %>
using System;
using System.Web;
using SunSoft.BLL;
public class Handler : IHttpHandler ... {
public void ProcessRequest (HttpContext context) ...{
FuncLogic obj = new FuncLogic();
string tableName = context.Request.QueryString["VCode"].ToString().Trim();
string message = "";
if (tableName == "")
...{
message = "表名不能为空!";
}
else if (tableName.Length == 1)
...{
message = "表名不能少于2位!";
}
else
...{
if (obj.checkTableNameIfExist(tableName))
message = "恭喜,该用户名可用!";
else
message = "该用户名已经存在,不可用!";
}
context.Response.ContentType = "text/plain";
context.Response.Write(message);
}
public bool IsReusable ...{
get ...{
return false;
}
}
}
// ***************页面引用****************
< asp:TextBox ID = " txtUserName " runat = " server " onblur = " getData() " ></ asp:TextBox ></ td >
// 问题:实现在文本框失去焦点时验证用户名是否存在.
// 解决方案:
// ---------1.在JS文件里面写==异步JAVASCRIPT==的方法
// ---------2.在c#语言的web程序中添加一个 .ashx文件(一般处理程序)
// ---------3.在文本框的失去焦点属性(onblur)引用第二步中的方法
// ***************************js文件***********************
/**/ /// <summary>
/// 异步JAVASCRIPT[无刷新验证AJAX]
/// (参考资料网址)http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/
/// http://www.nirvanastudio.org/java/ajax-with-j2ee.html
/// </summary>
function getData()
... {
var idField = document.getElementById("txtUserName");//获取页面用户输入的值--txtUserName 为页面文本框的id
var url = "Validator.ashx?VCode=" + escape(idField.value);//你要请求的资源
//第一步:声明XMLHttpRequest对象(此例为:[XMLHttpRequestObject]),它是AJAX的核心
var XMLHttpRequestObject = false;
//第二步:获取XMLHttpRequest对象
if (window.XMLHttpRequest) ...{
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) ...{
XMLHttpRequestObject = new
ActiveXObject("Microsoft.XMLHTTP");
}
//第三步:通过这个对象的OPEN方法向服务发送请求
// 该函数声明为XMLHttpRequest.open(String method, String URL, boolean asynchronous);
// method是请求的方式,可以为GET和POST URL是你要请求的资源 asynchronous是布尔类型,为true表示交互设置为异步
if(XMLHttpRequestObject) ...{
XMLHttpRequestObject.open("GET", url,true);
//第四步:由于将交互设置为异步方式,因此要为指定一个回调函数[此处的callback()]:剩下的事就交给回调函数处理了。
// 判断是否已经调用了而且readyState是4,表示XMLHttpRequest的调用已经完成。HTTP状态代码200表示一个成功的HTTP交互。
XMLHttpRequestObject.onreadystatechange = function callback()
...{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) ...{
//显示提示信息的地方--lblInfo为你页面上显示信息的标签
document.getElementById("lblInfo").innerText = XMLHttpRequestObject.responseText;
delete XMLHttpRequestObject;
XMLHttpRequestObject = null;
}
}
//第五步:调用send()(参数是空或是null)将会发起一次请求,对于GET方式的请求,两次同样的请求将会得到相同的结果
XMLHttpRequestObject.send(null);
}
}
// ****************.ashx文件*************************
<% @ WebHandler Language = " C# " Class = " Handler " %>
using System;
using System.Web;
using SunSoft.BLL;
public class Handler : IHttpHandler ... {
public void ProcessRequest (HttpContext context) ...{
FuncLogic obj = new FuncLogic();
string tableName = context.Request.QueryString["VCode"].ToString().Trim();
string message = "";
if (tableName == "")
...{
message = "表名不能为空!";
}
else if (tableName.Length == 1)
...{
message = "表名不能少于2位!";
}
else
...{
if (obj.checkTableNameIfExist(tableName))
message = "恭喜,该用户名可用!";
else
message = "该用户名已经存在,不可用!";
}
context.Response.ContentType = "text/plain";
context.Response.Write(message);
}
public bool IsReusable ...{
get ...{
return false;
}
}
}
// ***************页面引用****************
< asp:TextBox ID = " txtUserName " runat = " server " onblur = " getData() " ></ asp:TextBox ></ td >