ASP.NET中Ajax技术使用Json格式传递数据

通常,我们需要使用Ajax获取一连串的信息,如果我们直接使用文本格式,需要把信息拆分开,比如使用split+格式字符的方式去拆分,但是,如果我们查询的信息中包含了用户差分的格式字符时,得到的数据就会出错,如果使用XML的话,又显得太麻烦,所以,很多时候使用Json是一种很不错的方式;

比如,我们需要用Ajax获取一组用户信息,其中包括username,age,sex,address等等;那么组合成的Json字符串为:

{username :’yuliang’,age:21,sex:’男’,address:’深圳福田’}

调用示例:

--jquery方式--
function getUserInfo(id) {
    if (isNaN(id)) { return;}
    $.ajax({
        type: "get",
        url: "AjaxCommonClass.aspx?m=getUserInfoById&id=" + id,
        dataType: "json",
        success: function(data) {
            $("#username").html(data.username);
             $("#age").html(data.age);
            $("#sex").html(data.sex);
            $("#address").html(data.address);
        }
    });
}

那么如何在后台输出Json格式的字符串呢?
最简单最原始的方式就是组合字符串:
使用System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append()方式.
最后拼装成:{username :’yuliang’,age:21,sex:’男’,address:’深圳福田’}

第二种使用.net freamwork3.0 自带封装方法(将对象序列化成JSON格式的字符串)

    public static string Serialize(object obj) {
        if (obj == null) return null;
        System.Runtime.Serialization.Json.DataContractJsonSerializer s = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
        using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
        {
            s.WriteObject(ms, obj);
            return System.Text.Encoding.UTF8.GetString(ms.ToArray());
        }
    }

这样,我们在传递Ajax数据时直接Response.Write(Serialize(obj))方法即可;
客户端接收到字符串后,会自动解析成JS对象!