asp教程.net ajax json入門教程與詳細執行個體json簡介
在正式討論json格式之前,首先讓我們簡要回憶一下xml。xml是“可擴充的標記語言”的簡稱,它提供了定義web中一系列資料轉送協議的方式,是文本型的,被人們譽為“完全開發internet和web潛力的理想方式”。
那麼,為什麼asp.net教程 ajax中還要引入json呢?還是讓我們先來觀察一下例子吧。比如當前web頁面將從後台載入一些通訊錄的資訊,這些資訊如果寫成xml,可能是如下形式:
<contact>
<friend>
<name>michael</name>
<email>17bity@gmail.com</email>
<homepage>http://www.111cn.net</homepage>
</friend>
<friend>
<name>john</name>
<email>john@gmail.com</email>
<homepage>http://www.111cn.net</homepage>
</friend>
<friend>
<name>peggy</name>
<email>peggy@gmail.com</email>
<homepage>http://www.aimeige.com.cn</homepage>
</friend>
</contact>
而寫成json形式,則會是:
[
friend: {
name:"michael",
email:"17bity@gmail.com",
homepage:"http://www.111cn.net"
},
friend: {
name:"john",
email:"john@gmail.com",
homepage:"http://www.111cn.net"
},
friend: {
name:"peggy",
email:"peggy@gmail.com",
homepage:"http://mb.111cn.net"
}
]
use類
using system;
using system.collections.generic;
using system.linq;
using system.web;
/// <summary>
///user 的摘要說明
/// </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; }
}
}
js代碼
<script type="text/jscript">
function callserver() {
//json發送對象
serversum("{name:'linyijia',age:'21'}");
}
function getregister(rg, contex) {
document.getelementbyid("txtregister").value=rg;
}
</script>
asp.net
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)
{
//回調getregister方法
string callbackfun = page.clientscript.getcallbackeventreference(this,"arg","getregister","context");
//建立serversum方法,在用戶端調用的時候就,會回調getregister方法,把參數傳給raisecallbackevent(string eventargument ),最後通過
//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 "伺服器:你好,你的使用者名稱為:" + u.name + "你的年齡為" + u.age;
}
public void raisecallbackevent(string eventargument)
{
網頁特效serializer js = new javascriptserializer();
u =js.deserialize<users>(eventargument);
}
#endregion
}