<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
           
            GetByJquery("#area", 0);
           
            $("#area").change(function () {
                GetByJquery("#subarea", $("#area").val());
            });

$("#btnGet").click(function () {
                alert($("#area").val() + "--" + $("#area option:selected").text());
            });
        });

function GetByJquery(ddlId, id, selId) {
            $.getJSON("SelectAjax.ashx", { action: "area", id: id, rnd: Math.random() }, function (data) {
                $(ddlId).empty();
                $("<option value=\"-1\">不限</option>").appendTo($(ddlId));
                $.each(data, function (i, item) {
                    $("<option></option>")
                    .val(item.AreaID)
                    .attr("selected", item.AreaID == selId)
                    .text(item.AreaName)
                    .appendTo($(ddlId));
                });
            });
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <select id="area" name="area">
            <option value="-1">不限</option>
        </select>
        <select id="subarea" name="subarea">
            <option value="-1">不限</option>
        </select>
        <input id="btnGet" name="btnGet" type="button" value="Get" />
    </div>
    </form>
</body>
</html>

SelectAjax.ashx文件:

/// <summary>
    /// SelectAjax 的摘要说明
    /// </summary>
    public class SelectAjax : IHttpHandler
    {

public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

string action = context.Request.QueryString["action"];

if (("area").Equals(action))
            {
                string id = context.Request.QueryString["id"];
                if (!string.IsNullOrEmpty(id))
                    context.Response.Write(GetArea(id));
                else context.Response.Write("");
            }
        }

private string GetArea(string id)
        {
            List<Area> areaList = new List<Area>();

if (id == "0")
            {
                areaList.Add(new Area
                {
                    AreaID = "01",
                    AreaName = "罗湖区",
                    PID = "0"
                });
                areaList.Add(new Area
                {
                    AreaID = "02",
                    AreaName = "福田区",
                    PID = "0"
                });
            }

if (id == "01")
            {
                areaList.Add(new Area
                {
                    AreaID = "0101",
                    AreaName = "莲塘",
                    PID = "01"
                });
                areaList.Add(new Area
                {
                    AreaID = "0102",
                    AreaName = "黄贝岭",
                    PID = "01"
                });
            }
            if (id == "02")
            {
                areaList.Add(new Area
                {
                    AreaID = "0201",
                    AreaName = "八卦岭",
                    PID = "02"
                });
                areaList.Add(new Area
                {
                    AreaID = "0202",
                    AreaName = "华强",
                    PID = "02"
                });
            }

return Serialize(areaList);
        }

/// <summary>
        /// Json序列化
        /// </summary>
        /// <typeparam name="T">泛型</typeparam>
        /// <param name="t">泛型</param>
        /// <returns>序列化</returns>
        private string Serialize(object obj)
        {
            JavaScriptSerializer js = new JavaScriptSerializer();
            return js.Serialize(obj);
        }
        /// <summary>
        /// Json反序列化
        /// </summary>
        /// <typeparam name="T">泛型</typeparam>
        /// <param name="strJson">泛型</param>
        /// <returns>反序列化</returns>
        private T Deserialize<T>(string strJson)
        {
            JavaScriptSerializer js = new JavaScriptSerializer();
            return js.Deserialize<T>(strJson);
        }

public class Area
        {
            public string AreaID { get; set; }
            public string AreaName { get; set; }
            public string PID { get; set; }
        }

public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

[转]jquery getJSON 数据联动(采用序列化和反序列化获取数据) .的更多相关文章

  1. Jackson序列化和反序列化Json数据完整示例

    Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会 ...

  2. go-redis 基于beego正确使用序列化存储数据和反序列化获取数据

    安装go-redis // 安装命令 go get github.com/gomodule/redigo/redis // 导入使用 import( "github.com/gomodule ...

  3. Activity与Fragment数据传递之Fragment从Activity获取数据

    整理Fragment与Activity之间的数据交换,大体上包括三种: 1.Fragment从Activity获取数据 2.Activity从Fragment获取数据 3.Fragment之间获取数据 ...

  4. 【Django+Element UI】使用一个接口文件,搞定分页获取数据,模糊查询后分页获取数据

    1:序列化获取数据的接口设计 1:分页获取序列化数据 2:是个能传参数的接口 class Society(APIView): def post(self, request): keywords = s ...

  5. php 写入数据到MySQL以及从MySQL获取数据,页面出现乱码的解决方法

    现象如标题. 解决思路: 1确定数据库charset是否是utf-8 a. charset不是utf-8 1, 更改数据库charset为utf-8 ALTER DATABASE db_name DE ...

  6. Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)

    Fragment与Activity之间的数据交换,通常含有3: 一.Fragment从Activity获取数据(仅本文介绍了一个第一): 两.Activity从Fragment获取数据: 三.Frag ...

  7. pickle 数据对象的序列化和反序列化

    python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...

  8. JS实现Ajax,Josn数据的序列化和反序列化---例: 省市区联动(包含get,post)

    服务器端相应JOSN数据   用到序列化和反序列化----命名空间using System.Web.Script.Serialization; public void ProcessRequest(H ...

  9. WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer)

    原文:WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济 ...

随机推荐

  1. mysql数据库的基本操作

    mysql数据库的基本操作dos命令启动mysql服务:net start mysql启动数据库: mysql -uroot -p查看所有的数据库:show databases:新建数据库:creat ...

  2. linux软连接和硬链接

    1.软连接(符号连接)创建方法(相当于windows的快捷方式) # ln -s 原文件 连接文件(最好使用绝对路径) 特点: 1.软连接文件是777的权限,而且很小很小: 2.可以跨分区(文件系统) ...

  3. 全面解析sizeof(上) 分类: C/C++ StudyNotes 2015-06-15 10:18 188人阅读 评论(0) 收藏

    以下代码使用平台是Windows7 64bits+VS2012. sizeof是C/C++中的一个操作符(operator),其作用就是返回一个对象或者类型所占的内存字节数,使用频繁,有必须对齐有个全 ...

  4. 【OPENGL】第二篇 HELLO OPENGL(续)

    上一次我们在这里分析了OpenGL的例子,但是最后还少分析最重要的部分:着色器相关的代码.因此这一次作为前一篇文章的续集. 上一篇文章的地址 http://www.cnblogs.com/MyGame ...

  5. sql查询语句

    //查询表的字段名和字段类型select column_name,data_type from information_schema.columns where table_name = '表名' / ...

  6. HTTP head 详解 (转)

    HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内 容请参考RFC2616.HTTP协议采用了请求/响应模型.客 ...

  7. 4G基站如何查询

     例如:4600125086016801代码断码如下断:46001(营运商代码) 2508(十进位制9480,CGI代码,CGI相当于是4G的LAC) 6016801(十进位制100755457,eN ...

  8. 基于.NET平台常用的框架整理【转】

    转:http://www.cnblogs.com/hgmyz/p/5313983.html 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产 ...

  9. List的FindIndex和ForEach

    FindIndex和ForEach能接受一个delegate,用来定义查找规则太好用. 匿名函数,萌萌哒:Conditional("DEBUG")也是极好的. 读<C#本质论 ...

  10. 承接Unity3D外包公司 — 技术分享

    Cardboard SDK for Unity的使用 上一篇文章作为系列的开篇,主要是讲了一些虚拟现实的技术和原理,本篇就会带领大家去看一看谷歌的Cardboard SDK for Unity,虽然目 ...