<httpHandlers> <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/> </httpHandlers> |
protected void Page_Load(object sender, EventArgs e) { AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default)); } |
[AjaxPro.AjaxMethod] public string SetTb(string name) { return name; } |
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> <script language="javascript" type="text/javascript"> // <!CDATA[ function comit_onclick() { var name=document.getElementById("tb1").value; _Default.SetTb(name,callback); } function callback(res) { document.getElementById("tb").value=res.value; } // ]]> </script> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="tb1" runat="server"></asp:TextBox><br /> <input id="comit" type="button" value="Ok" onclick="return comit_onclick()" /> <br /><asp:TextBox ID="tb" runat="server"></asp:TextBox> </div> </form> </body> </html> |
注意:这里值得注意的地方是 _Default.SetTb(name,callback);这句话是为了调用_Default.aspx.cs后台代码中SetTb这个方法的,如果这个方法没有要传递的参数则指明返回的处理方法是哪一个就OK了,写成_Default.SetTb(callback);
第二种:不需要设置。
1、<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script language='javascript'>
function getResponseData(params)
{
var objHttp = new ActiveXObject("Microsoft.XMLHTTP");//更加完善的是判断浏览器的类型
var getStr;
objHttp.Open("Get","Default.aspx?params="+params,false);
objHttp.Send();
getStr = objHttp.responseText;
return getStr;
}
function Button1_onclick() {
var tt= getResponseData("getData");
document.getElementById("TextBox1").innerText=tt;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="button" language="javascript" onclick="return Button1_onclick()" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>
</form>
</body>
</html>
2、using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["params"] == "getData")//判断是不是xmlhttp的请求,自创,没有找到办法。
getData();
}
public void getData()
{
// Public Function GetEmployee(ByVal strEmployeeId As String) As String
Response.Clear();
Response.Write("0");
Response.End();
}
}
第三种:回调
1、<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script type="text/javascript">
function GetMessageFromServer()
{
UseCallBack1("","");
}
function JSCallback(TextBox1, context)
{
// 当回调结束后将执行这里的方法,把从服务器端获取的值进行客户端操作
document.forms[0].TextBox1.value = TextBox1;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" id="Button1" runat="server" value="Get Message" onclick="GetMessageFromServer()"/>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>
</form>
</body>
</html>
2、
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Default3 : System.Web.UI.Page,ICallbackEventHandler
{
string callbackResult;
protected void Page_Load(object sender, EventArgs e)
{
#region
//下面的C#代码在运行时,将在页面生成如下的JavaScript代码:
//function UseCallBack(arg, context)
//{
//WebForm_DoCallback('__Page',arg,JSCallback,context,null,false);
//}
//实际上通过XmlHttp,最终从服务器端返回结果回调客户端方法。所以在服务器端执行完成之后框架将通知JavaScript方法告知服务器已经执行完毕,例子中将调用function JSCallback(TextBox1, context).
string cbref = Page.ClientScript.GetCallbackEventReference(this, "arg", "JSCallback", "context");
// 生成一个JavaScript脚本来触发回调
string cbScr = string.Format("function UseCallBack1(arg, context) {{ {0}; }} ", cbref);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "UseCallBack1", cbScr, true);
#endregion
}
public void RaiseCallbackEvent(string eventArgument)
{
// 服务器端操作
callbackResult = "DotNET Rocks!";
}
public string GetCallbackResult()
{
return callbackResult;
}
}
第四种:http://www.kingmx.com/article/8311
总结:1、第一种需要添加应用ajaxpro.dll,配置webconfig,组册.期中ajaxpro.dll与ajax.dll 个人认为用法
上没 有 区 别,前者是更高版本,没有具体尝试ajax.dll。
2、第二种需要判断是不是xmlhttp的请求。比较简单,自创。不知道如何判断请求,通过参数。
3、第三种 需要用到ICallbackEventHandler,个人认为就是一个接口,重要的方法
RaiseCallbackEvent和GetCallbackResult,这个理解起来没有第一种容易理解。
4、 最后一种和第三中差不多,参数设置,组册sript的方法可能不一样。
5、本来很容易的东西,让他们用第一种、第三种的办法掩盖了显示麻烦了,用起来似乎简单点,
但是看不到ajax的本质东西。
Gridview
如何更新GridView,用MagicAjax.dll
AjaxPro.NET框架生成高效率的Tree(Asp.net
该文章转载自网络大本营:http://www.xrss.cn/Info/4769.Html
http://www.xrss.cn/Info/4769.Html