ASP.NET AJAX + JSON 实现对象调用
最近開始學(xué)習(xí)ASP.NET AJAX 搞了兩天學(xué)了點(diǎn)皮毛,貼點(diǎn)代碼 日后方便自己查看
客戶端:
?
<%@ Page Language="C#" AutoEventWireup="true"? CodeFile="ASP.NETA_JAX.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 type="text/jscript">
??????? function CallServer() {??
??????????? //JSON發(fā)送對(duì)象
??????????? ServerSum("{name:'linyijia',age:'21'}");
??????? }
??????? function GetRegister(rg, contex) {
??????????? document.getElementById("TxtRegister").value=rg;
??????? }
??? </script>
</head>
<body>
??? <form id="form1" runat="server">
??? <div>
???
??????? <br />
??????? 用戶名:<input id="TxtNum1" type="text" />
??????? <br />
??????? 服務(wù)器:<input id="TxtRegister" type="text" /><br />
?????? <button id="SumBtn" type="button" οnclick="CallServer()">登錄</button>
???
??? </div>
??? </form>
</body>
</html>
?
?
服務(wù)器:
?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Serialization;
public partial class _Default : System.Web.UI.Page ,ICallbackEventHandler
{
??? Users u = null;
??? protected void Page_Load(object sender, EventArgs e)
??? {
?????? //回調(diào)GetRegister方法
??????? string CallBackFun = Page.ClientScript.GetCallbackEventReference(this,"arg","GetRegister","context");
?????? //創(chuàng)建ServerSum方法,在客戶端調(diào)用的時(shí)候就,會(huì)回調(diào)GetRegister方法,把參數(shù)傳給RaiseCallbackEvent(string eventArgument?),最后通過(guò)
????? //GetCallbackResult()方法把返回值傳給客戶端
??????? string RegisterFun = string.Format("function ServerSum(arg,context){{{0};}}",CallBackFun);
??????? Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"ServerSum",RegisterFun,true);
???????
??? }
??? string mssage = string.Empty;
??? #region ICallbackEventHandler 成員
??? public string GetCallbackResult()
??? {
??????? return "服務(wù)器:你好,你的用戶名為:" + u.Name + "你的年齡為" + u.Age;
??? }
??? public void RaiseCallbackEvent(string eventArgument)
??? {
??????? JavaScriptSerializer js = new JavaScriptSerializer();
??????? u? =js.Deserialize<Users>(eventArgument);
???????
??? }
??? #endregion
}
?
?Users類
?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
///User 的摘要說(shuō)明
/// </summary>
public class Users
{
??? string name;
??? public string Name
??? {
??????? get { return name; }
??????? set { name = value; }
??? }
??? string age;
??? public string Age
??? {
??????? get { return age; }
??????? set { age = value; }
??? }
}
?
原理:
使用JSON向服務(wù)器發(fā)送一個(gè)對(duì)象,服務(wù)器通過(guò)實(shí)現(xiàn)?ICallbackEventHandler接口后,重寫GetCallbackResult和RaiseCallbackEvent方法,在回調(diào)的時(shí)候,在RaiseCallbackEvent方法
中反序列化JSON,并在GetCallbackResult把結(jié)果返回給客戶端.具體的我以后有空再補(bǔ)充,歡迎大家討論!
轉(zhuǎn)載于:https://www.cnblogs.com/linyijia/archive/2010/01/13/1646716.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET AJAX + JSON 实现对象调用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 打破信息孤岛完成EAI
- 下一篇: 用 DomIt! XML 处理工作