用ASP实现XMLHttpRequest

目前好多语言都可以实现 Ajax ,像 Java, .Net 等等。其实 Ajax 的核心内容就是 XMLHttpRequest 。如果读者 XMLHttpRequest 不太了解,可以在 Google 上找找《 Dynamic HTML and XMLThe XMLHttpRequest Object 》这文章,介绍的比较详细,我也就不用对 XMLHttpRequest 进行过多的说明了。对下面讲解并演示在 ASP 中使用 XMLHttpRequest 来进行无刷新效果。

首先我们新建一个ASP页面,只要很简单的代码就可以了:

<html>
<head>
<script>
var req=null;
var dom = new ActiveXObject("Microsoft.XMLDOM");
var url='http://localhost/ajaxtest/action.asp?q=';
script>
head>
<body onload="loadHTTP()">
<form action="adtion.asp" name="Form1">
<INPUT type="text" ID="Text1" NAME="Text1"
onblur="InitReq(this.value)">
<DIV id=test>DIV>
form>
body>

大家可以看到在Head标签里我们声明了几个JS变量,这是为后边写JS作的准备。

然后我们用JS声明一个XMLHTTPRequest对象。


//declare a XMLHTTPRequest Object.
function loadHTTP()
{
if (window.ActiveXObject)
{
// Microsoft Way
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
// Others
req = new XMLHttpRequest();
}
}

TextBoxonblur事件将会触发一个InitReq方法,参数是这个TextBox自己的Value值。

再来看看InitReq方法是什么样的:

//initial it
function InitReq(_url)
{
req.open("GET",(url+_url),true);
req.onreadystatechange=HttpHandler;
req.send(null);
}

注意req.onreadystatechange=HttpHandler这一句,它告诉指出了函数HttpHandler是用来处理XMLHttpRequestonreadystatechange事件的。那么一旦XMLHttpRequestonreadystatechange被触发,那就将执行用户自定义的函数,当然名字可以随便,并不一定是要HttpHandler
下边是我自己写的
HttpHandler函数:

//handler
function HttpHandler()
{
if(req.readyState==4)
{
if(req.status==200)
{
var tt=document.getElementById("test");
tt.innerHTML=req.responseText;
}
else{alert('error!');}
}
}

OK,到目前我们的客户端功能就算完成了,只有三个函数,简单吧。呵呵。

这个页面只有一个TextBox文本框,用户可以在里边输入一些字符,当这个文本框失去焦点的时候页面就会有一个requestaction.asp这个页面。为方便起见action.asp只是简单的返回用户输入的内容,表示成功收到:

<%if request.QueryString("q") <>"" then
response.Write(request.QueryString("q"))
end if
%>

到这儿已经全部完工,大家可以试一下,看看在文本框失去焦点以后是否像平常的提交一样会出现一个进度条,然后页面刷新?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现 select 标签的联动,可以使用 ASP.NET 的 AJAX 技术。 首先,在页面上添加两个 select 标签,分别为父级 select 和子级 select。然后,在父级 select 的 onchange 事件中,发送 AJAX 请求到服务器,获取子级 select 的数据,并根据父级 select 的选中值来动态生成子级 select 的选项。 以下是一个简单的示例代码: ```html <!-- 父级 select --> <select id="parentSelect" onchange="loadChildSelect()"> <option value="">请选择</option> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select> <!-- 子级 select --> <select id="childSelect"> <option value="">请选择</option> </select> <script type="text/javascript"> function loadChildSelect() { // 获取父级 select 的选中值 var parentValue = document.getElementById("parentSelect").value; if (parentValue === "") { // 如果未选择任何选项,则清空子级 select document.getElementById("childSelect").innerHTML = '<option value="">请选择</option>'; return; } // 发送 AJAX 请求,获取子级 select 的数据 var xhr = new XMLHttpRequest(); xhr.open("GET", "GetChildSelectData.aspx?parentValue=" + parentValue, true); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // 根据父级 select 的选中值和获取到的数据,动态生成子级 select 的选项 var childOptions = xhr.responseText; document.getElementById("childSelect").innerHTML = childOptions; } }; xhr.send(); } </script> ``` 在服务器端,可以创建一个类似于 GetChildSelectData.aspx 的页面,用于接收 AJAX 请求,并返回子级 select 的数据。在该页面中,可以根据传递过来的父级 select 的选中值,查询数据库或其他数据源,获取子级 select 的数据,并将数据以 HTML 代码的形式返回给客户端。以下是一个简单的示例代码: ```csharp protected void Page_Load(object sender, EventArgs e) { string parentValue = Request.QueryString["parentValue"]; string childOptions = ""; // 根据父级 select 的选中值,查询数据库或其他数据源,获取子级 select 的数据 // 将子级 select 的选项以 HTML 代码的形式拼接成一个字符串 childOptions Response.Write(childOptions); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值