在asp.net中使用ajax

在asp.net中使用ajax有两种方法:一种是使用ajax控件,一种是直接手动写代码。我比较喜欢自己手动写代码,那样子才知道如何创建、使用ajax,并且从中获得快感。如果只知道用ajax控件,则永远都不懂ajax,那只是固定死板的动作,只能说是“知其然,而不知所以然”。

下面是一个简单的示例:

1.在html页面中:

   <script language="javascript" type="text/javascript">

function send_request(checker) {
//创建XMLHttpRequest;
http_request = false;
if (window.XMLHttpRequest) {
// 非IE 浏览器
http_request = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
//IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP"); //较新版本的IE
} catch (e) {
try {
http_request = new ActiveXOBject("Microsoft.XMLHTTP"); //旧版本IE
} catch (e) { }
}
}
else {
window.alert("不能创建 XMLHttpRequest对象,无法应用Ajax");
return false;
}

http_request.onreadystatechange = Check;//指定回调函数

if (checker == "Email") checkcontent = document.getElementById("TxtEmail").value;

http_request.open("get", "Handler.ashx?checkitem="+checker+"&&checkcontent="+checkcontent, true);

http_request.send(null);//发送上面创建的HTTP请求

}

function Check() {
if (http_request.readyState == 4)//发送成功
{
if (http_request.status == 200)//交易成功
{

      //正式处理有信息

if (http_request.responseText == "1") 
       document.getElementById("checkphone").innerText = "手机号码不正确!";

}

}

}

</script>

2.在事件处理程序中:

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;
using System.Text.RegularExpressions;

public class Handler : IHttpHandler {

public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string CheckItem = context.Request.QueryString["checkitem"].ToString();
string CheckContent = context.Request.QueryString["checkcontent"].ToString();
try
{//处理信息
if (CheckContent != null&&CheckContent!="null")
{
if (CheckItem == "Phone" || CheckItem == "Email")
{
string matchstring = @"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$";
if (CheckItem == "Phone")
{
matchstring = @"((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)";
}
if (!Regex.IsMatch(CheckContent, matchstring))//匹配失败
{
if (CheckItem == "Phone") context.Response.Write("1");
if (CheckItem == "Email") context.Response.Write("2");
}
}
catch (Exception ex)
{ throw ex; }

}

public bool IsReusable {
get {
return false;
}
}

}

 

 

关于readyState的说明

readyState属性包括五种可能的取值

0:(未初始化)send方法还没有被调用

1:(加载中)已调用了send方法,请求还在处理中

2:(已加载)send方法已完成,整个应答已接受

3:(交互中)正在解析应答

4:(已完成)应答已解析,准备好进行下一步处理

转载于:https://www.cnblogs.com/joyho/articles/2703618.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值