大至可分以下几步:
1:配置文件
对于web.config中的文件配置一定要有.这是必须的,它指定了包装器的httphandler,我们知道所有的aspx 的请求都是由该system.web.ui.pagehandlerfactory类来处理.具体怎么工作,我也不知道.以后再研究啦.
其配置文件如下:
<configuration>
<system.web>
<httpHandlers>
<add verb="POST,GET" path="
type="Ajax.PageHandlerFactory,
</httpHandlers>
...
<system.web>
</configuration>
我们看着ajax/*.ashx是不是觉得有个路径,其实不用路径.就这样写好啦.它就是标明其所有的页面都有PageHandlerFactory来处理.
Global.asax文件:我看到有的例程中这个说明,但目前我测试加上不加一样.还待研究.
好啦,现在我们来看如何在aspx页面使用吧.
先建一个后台cs文件:
public Calss AjaxTest
{
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
public string GetName()
{
string name = "测试中心";
return name;
}
}
aspx页面
<%@ Page Inherits="AjaxPlay.test" Codebehind="test.aspx.cs" ... %>
<html>
<head>
<script language="javascript" src="ajax/common.ashx"></script>
<script language="javascript" src="ajax/AjaxPlay.Sample,AjaxPlay.ashx"></script>
</head>
<body>
<form id="Form1" method="post" runat="server">
<input id=aa type = button onclick="wjy()">
<script language="javascript">
function wjy()
{
var res = AjaxTest.GetName(test1);
alert(res);
}
</script>
</form>
</body>
</html>
如在test.aspx.cs文件中注册ajax使用也可
如:Ajax.Utility.RegisterTypeForAjax(typeof( 程序集名称.Ajaxtest));
在这儿可以看到回调函数可以返回数据类型有以下几种:
- Value——服务器端函数实际返回的值(无论是字符串、自定义对象还是数据集)。
- Error——错误消息,如果有的话。
- Request——xml http请求的原始响应。
- Context——上下文对象
这就是一个简单的ajax应用例子
还有:Ajax不权能返回简单的数据类型,例字符串,整型,符点型等,还能返回dataset,datatable,以及自定义数据类型及对象.
在这里我们假设从服务器端返回一个dataset哪么在客户端的操作dataset如下:
function callback_GetProductForSongWords(res)
{
if(res != null && res.value != null && res.value.Tables != 0 && res.value.Tables.length == 1)
{
if(res.value.Tables[0].Rows.length>0)
{
document.getElementById("songname").innerHTML = "<a href='Product.aspx?ProductID="+res.value.Tables[0].Rows[0]["PRODUCTID"]+"' target=_blank>" + res.value.Tables[0].Rows[0]["PRODUCTNAME"]+"</a>";
document.getElementById("productprice").innerHTML =formatPrice(res.value.Tables[0].Rows[0]["PRODUCTPRICE"]);
document.getElementById("buylink").innerHTML =" <a href='Cart.aspx?ProductID="+res.value.Tables[0].Rows[0]["PRODUCTID"]+"' target=_blank><img src='images/buy.gif' width=14 height=10 border=0> 购买</a>";
document.getElementById("specialimg").innerHTML ="<a href='Product.aspx?ProductID="+res.value.Tables[0].Rows[0]["PRODUCTID"]+"' target=_blank><IMG height=200 src=images\\"+res.value.Tables[0].Rows[0]["MIDDLEIMAGE"]+" width=200 border=0></a>";
if(res.value.Tables[0].Rows[0]["LYRIC"]!=null)
document.getElementById("txtlyric").value = res.value.Tables[0].Rows[0]["LYRIC"];
else if( res.value.Tables[0].Rows[0]["DESCRIPTION"] !=null)
document.getElementById("txtlyric").value = res.value.Tables[0].Rows[0]["DESCRIPTION"];
else if( res.value.Tables[0].Rows[0]["SPECIALDESCRIPTION"]!=null)
document.getElementById("txtlyric").value = res.value.Tables[0].Rows[0]["SPECIALDESCRIPTION"];
else
document.getElementById("txtlyric").value="";
}
}
}
Ajax还可以返回自定义类,唯一的要求是必须用Serializable属性标记.
可能有误,欢迎拍砖.
浙公网安备 33010602011771号