在上一篇文章中,我们讲到了最为简单的无刷新技术的实例,本例,我们一起来学习一下使用无刷新技术将客户端的参数传到客户端,经过处理,将响应信息反馈给客户端。
本例要实现的功能是:浏览页面有两个输入框、一个按钮,当在第一个框输入内容时,点击按钮,将输入的信息传递到服务器,经过处理,回传到客户端并显示在第二个框中。
同样,本例,也需要三个文件,以下的这三个文件,其名称大家可以自行取名,只需将三文件放在同级同目录下面即可。
①ParameteAjax.aspx文件
②ParameteAjax.js文件
③ParameteAjax.ashx
随便说一下,.ashx是服务器端文件,它相应于一个CS文件;
下面我们对这三个文件作详细说明:
①ParameteAjax.aspx文件
该文件内容非常简单,里面包含三个控件:
<div>
参数值一:<asp:TextBox ID="P1" runat="server"></asp:TextBox><br />
参数值二:<asp:TextBox ID="P2" runat="server"></asp:TextBox><br />
<input id="Button1" type="button" value="button" onclick="CallServer()"/></div>
onclick="CallServer()"指的是点击按钮就执行JS文件中的CallServer()函数;
此外,记得在该文件的Head区域引用js文件,如:<script type="text/javascript" src="ParameteAjax.js">
②ParameteAjax.js文件
该文件的代码,与上一例大致相同,仅存在细微的区别:
var xmlHttp= false;
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e2)
{
xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined')
{
xmlHttp = new XMLHttpRequest();
}
function OnMessageBack()
{
//判断请求状态及HTTP状态是否都能满足条件
if (xmlhttp.readystate==4 && xmlhttp.status==200)
{
//将返回的文本打印到页面上
document.write (xmlhttp.responsetext);
}
}
function CallServer()
{
var Text1=document.getElementById("P1").value;
var url ="ParameteAjax.ashx?MyValue1="+escape(Text1);
//请注意了,上一行代码就是传递参数的代码
xmlHttp.open("GET", url, false);
xmlHttp.onreadystatechange = UpdatePage;
xmlHttp.send(null);
}
function UpdatePage()
{
if (xmlHttp.readyState < 4)
{
}
if (xmlHttp.readyState == 4)
{
var response = xmlHttp.responseText;
document.getElementById("P2").value=response;
}
}
③ParameteAjax.ashx
该文件的代码,简单到达人看到了,会笑破肚皮的。
using System;
using System.Web;
public class ParameteAjax : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write(context.Request["MyValue1"].Trim());
//注意,上一行代码就是处理参数的代码
}
public bool IsReusable
{
get
{
return false;
}
}
}
讲完,以后俺再有什么心得体会,再贴出来与大家分享。