前台页面内容:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script language="javascript" type="text/javascript">
function callServer()
{
var context=document.getElementById("txtMessage").value;
dos(context);
}
//处理返回的数据
function ReceiveServerData(text)
{
document.getElementById("txtResult").value=text;;
alert(text);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="text" id="txtMessage" />
<input type="button" onclick="callServer();" value="callServer" />
Result: <input type="text" id="txtResult" />
</div>
</form>
</body>
</html>
后台的代码:
public partial class YTest : System.Web.UI.Page,ICallbackEventHandler
{
private string result;
protected void Page_Load(object sender, EventArgs e)
{
//if (!Page.IsPostBack)
//{
// string cbReference = Page.ClientScript.GetCallbackEventReference(this, "context", "ReceiveServerData", ""); //获取一个对客户端函数的引用;调用该函数时,将启动一个对服务器端事件的客户端回调。
// string callbackScript = "function dos(context){" + cbReference + ";}"; //注册客户端方法
// Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "dos", callbackScript, true); //向客户端写入脚本块
//}
}
下面是继承实现ICallbackEventHandler的两个方法:
/// <summary>
/// 处理回调事件。
/// </summary>
/// <param name="text"></param>
public void RaiseCallbackEvent(string context)
{
result = "客户端在[" + DateTime.Now.ToString() + "]传送来了" + context;
}
/// <summary>
/// 返回回调事件的结果。
/// </summary>
/// <returns></returns>
public string GetCallbackResult()
{
return result;
}
}