惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
N
News | PayPal Newsroom
SecWiki News
SecWiki News
P
Privacy International News Feed
T
Troy Hunt's Blog
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
L
LINUX DO - 热门话题
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Security Latest
Security Latest
AWS News Blog
AWS News Blog
S
Secure Thoughts
W
WeLiveSecurity
H
Heimdal Security Blog
T
Threat Research - Cisco Blogs
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Security @ Cisco Blogs
G
GRAHAM CLULEY
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Spread Privacy
Spread Privacy
L
Lohrmann on Cybersecurity
C
CERT Recently Published Vulnerability Notes
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
Google Online Security Blog
Google Online Security Blog
Cisco Talos Blog
Cisco Talos Blog
雷峰网
雷峰网
Cloudbric
Cloudbric
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
Hacker News: Ask HN
Hacker News: Ask HN
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google DeepMind News
Google DeepMind News
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
Latest news
Latest news
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
D
Docker
Recent Announcements
Recent Announcements
博客园 - 【当耐特】
H
Help Net Security
博客园 - 司徒正美
TaoSecurity Blog
TaoSecurity Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
Check Point Blog
博客园 - 叶小钗

博客园 - yulei

几个css技巧 HttpWebRequest 发送 POST实现自动用户登录 - yulei jquery selector 基础 - yulei smtp协议 发送带附件的邮件 控制滚动条 (转)防数据库批量注入JS 转载 JS获取CSS属性值 - yulei - 博客园 HttpCompress相关问题解决方法 - yulei - 博客园 C#发送Email邮件方法总结 数据导出到excel文件给客户端下载的几种方法(转) ndoc2007,生成注释文档,支持泛型,2.0,中文注解,部分汉化 IE和Firefox浏览器CSS网页布局不同点 - yulei - 博客园 通用获得网页的实际大小的javascript函数 仿DVBBS下拉菜单效果 webClient下载进度条 asp.net下URL网址重写成.html格式、RSS、OPML的知识总结 导出excel 使用AD724的RGB→NTSC/PAL制信号转换电路 AV-RF转换器的制作
asp.net ajax实现:Jquery+Json - yulei - 博客园
yulei · 2009-11-02 · via 博客园 - yulei

asp.net ajax实现:Jquery+Json(转)

适合轻量级的应用,客户端序列化和反序列化可用Json的JSON.parse()和JSON.stringify(),

但服务端序列化和反序列化的时候,遇到一些问题,我采用了三种方式,其中三种方式序列化和反序列化的方式各有不同,比较请点这里看。

以下是我的操作的代码:

前台:


 1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2<html xmlns="http://www.w3.org/1999/xhtml" >
 3<head runat="server">
 4    <title>无标题页</title>
 5    <script type="text/javascript" src="../JS/jquery-1.3.min.js"></script>
 6    <script type="text/javascript" src="../JS/json2.js"></script>
 7    <script type="text/javascript">
 8        function GetValue()
 9        {
10            $.get("Process.aspx"{Action:"get"}function (data, textStatus){
11     var name=$("#TName")[0];
12     var address=$("#TAddress")[0];
13     var age=$("#TAge")[0];
14     var obj=JSON.parse(data);
15     name.value=obj.Name;
16     address.value=obj.Address;
17     age.value=obj.Age;
18   }
);
19        }

20        
21        function SetValue()
22        {
23            var person=new Person($("#TName")[0].value,$("#TAddress")[0].value,$("#TAge")[0].value);
24            var str=JSON.stringify(person);
25            alert(str);
26             $.post("Process.aspx"{Action:"post",JsonStr:""+ str +""}function (data, textStatus){
27                alert("发送成功");
28   }
);
29        }

30        
31        function Person(name,address)
32        {
33            this.Name=name;
34            this.Address=address;
35        }

36    
</script>
37</head>
38<body>
39    <form id="form1" runat="server">
40    <div>
41        <table>
42            <tr>
43                <td>姓名:</td>
44                <td><input type="text" id="TName" /></td>
45            </tr>
46            <tr>
47                <td>住址:</td>
48                <td><input type="text" id="TAddress"/></td>
49            </tr>
50            <tr>
51                <td>年龄:</td>
52                <td><input type="text" id="TAge" /></td>
53            </tr>
54        </table>
55        <table>
56            <tr>
57                <td><input type="button" onclick="GetValue();" value="加载数据"></td>
58                <td><input type="button" value="更新数据" onclick="SetValue()"></td>
59            </tr>
60        </table>
61    </div>
62    </form>
63</body>
64</html>

后台:

 


 1 using System;
 2 using System.Collections;
 3 using System.Configuration;
 4 using System.Data;
 5 using System.Linq;
 6 using System.Web;
 7 using System.Web.Security;
 8 using System.Web.UI;
 9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13 using System.Runtime.Serialization.Json;
14 using System.ServiceModel.Dispatcher;
15 using System.Text;
16 using System.Web.Script.Serialization;
17 using System.IO;
18 using System.Runtime.Serialization;
19 namespace WebDemo.AjaxTest
20 {
21     public partial class Process : System.Web.UI.Page
22     {
23         protected void Page_Load(object sender, EventArgs e)
24         {
25             if (!Request.Params.AllKeys.Contains("JsonStr"))
26             {
27                 GetData();
28             }
29             else
30             {
31                 LoadData();
32             }
33         }
34         /// <summary>
35         /// 从客户端加载数据
36         /// </summary>
37         private void LoadData()
38         {
39             string str = Request.Params["JsonStr"];
40             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Model.User));
41             MemoryStream ms=new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str.ToCharArray()));
42             Model.User user = (Model.User)serializer.ReadObject(ms);
43             ms.Close();
44         }
45         /// <summary>
46         /// 向客户端发送数据
47         /// </summary>
48         private void GetData()
49         {
50             Model.User user = new Model.User();
51             user.Address = "上海市闵行区";
52             user.Age = 26;
53             user.Name = "Windstore";
54             string resultStr;
55             //方式一:System.Runtime.Serialization.Json Assembly:System.ServiceModel.Web
56             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Model.User));
57             MemoryStream stream = new MemoryStream();
58             serializer.WriteObject(stream, user);
59             stream.Position = 0;
60             StreamReader sr = new StreamReader(stream);
61             resultStr = sr.ReadToEnd();
62             sr.Close();
63             stream.Close();
64             //方式二:System.ServiceModel.Dispatcher.JsonQueryStringConverter Assembly:System.ServiceModel
65             //JsonQueryStringConverter convert = new JsonQueryStringConverter();
66             //resultStr = convert.ConvertValueToString(user, typeof(Model.User));
67             //方式三:System.Web.Script.Serialization
68             //StringBuilder sb = new StringBuilder();
69             //JavaScriptSerializer jsServilizer = new JavaScriptSerializer();
70             //jsServilizer.Serialize(user, sb);
71             //resultStr = sb.ToString();
72             Response.ContentType = "application/json";
73             Response.Write(resultStr);
74             Response.Flush();
75             Response.End();
76         }
77     }
78 }
79 

Model类:

 


 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Runtime.Serialization;
 6 namespace WebDemo.Model
 7 {
 8     /// <summary>
 9     /// 用户实体
10     /// </summary>
11     [DataContract]
12     public class User
13     {
14         #region 私有字段
15         private string named;
16         private string addressd;
17         private int aged;
18         #endregion
19         #region 公共属性
20         /// <summary>
21         /// 姓名
22         /// </summary>
23         [DataMember]
24         public string Name
25         {
26             get { return named; }
27             set { named = value; }
28         }
29         
30         /// <summary>
31         /// 家庭住址
32         /// </summary>
33         [DataMember]
34         public string Address
35         {
36             get { return addressd; }
37             set { addressd = value; }
38         }
39         
40         /// <summary>
41         /// 年龄
42         /// </summary>
43         [DataMember]
44         public int Age
45         {
46             get { return aged; }
47             set { aged = value; }
48         }
49         #endregion
50     }
51 

客户端用JSON.stringify()反序列化的时候,默认的值都是字符串类型的,如果想返回整型值,可以用 JSON.stringify(myObject, replacer);用回调函数replacer处理。