zoukankan      html  css  js  c++  java
  • 关于js接收json并进行处理

    最近工作中遇到的问题,内容是从数据库中读取值并赋给前台的几个textbox控件,由于公司使用的自定义控件,原本后台可以轻松实现的问题就只能用Ajax前台实现了,由于我对Ajax不是很熟练,所以记录下来并希望能对有同样问题的小伙伴起一些帮助。

            HttpRequest request;
            HttpResponse response;
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                this.request = context.Request;
                this.response = context.Response;
                string ID = this.request["ID"] ?? "";//接受前台js传的参数
                string josnString = string.Empty;
                string sql = string.Empty;
                DataTable dt = new DataTable();
                JsonRow jr = new JsonRow();//声明自定义的类
                if (!string.IsNullOrEmpty(ID))
                {
                    sql = @"select * from MST_BCS_BUDGET where ID=@ID";//需要查询的sql语句
                    dt = DataAccess.Instance("BizDB").ExecuteDataTable(sql, ID);//此处使用的自定义sqlhelper类,也可使用其他的,返回datatable类型
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        jr.ITEMCODE = ConvertUtil.ToString(dt.Rows[0]["BUDGETSHEET"]);//对类里面每个字段进行赋值
                        jr.PSP = ConvertUtil.ToString(dt.Rows[0]["PSP"]);
                        jr.BUDGETITEM = ConvertUtil.ToString(dt.Rows[0]["GLACCOUNT"]);
                        jr.COSTCENTERCODE = ConvertUtil.ToString(dt.Rows[0]["COSTCENTERNAME"]);
                    }
                }
                josnString = MyLib.SerializeUtil.JsonSerialize(jr);//转换成json
                this.response.Write(josnString);
            }
         //自定义一个类,主要用来存值
            public class JsonRow
            {
                public string ITEMCODE { get; set; }
                public string PSP { get; set; }
                public string BUDGETITEM { get; set; }
                public string COSTCENTERCODE { get; set; }
            }    

    上述代码是一般处理程序中的代码,下面还有一个生成自带的类,就没有放上去,主要就是有一个自定义类,这里的类名和我前台需要赋值的控件id一样,差一个前缀,具体作用会在前台说明。这里由于我是只给几个控件赋值,所以没必要使用datatable,并且是一行数据,如果是多行的话这里赋值的过程需要写一个for循环。

    接下来是前台js的代码

    function onChangerBudget(id) {
        var url = "/Solution/A06003/Ajax/BudgetHandler.ashx";
        var ID = id;
        if (ID != null && ID != "") {
            $.ajax({
                url: url,
                type: "POST",
                async: false,
                dataType: "json",
                data: { ID: ID },
                success: function (data) {
                    if (data != null && data != "") {
                        for (var k in data) {
                            $("input[id$=fld_" + k + "]").val(data[k]);
                        }
                    }
                }
            });
        }
    }

    以上url是一般处理程序的路径,type是传值方式,datatype是接受值类型,data是参数

    ajax的调用我就不赘述了,这里主要是success里对接受的json类型值的处理,上述方法是对于 {"name":"Liza", "password":"123"} json对象进行处理,方法中的k是键,data[k]是值。 $("input[id$=fld_" + k + "]").val(data[k]); 这里的 k 就是在一般处理程序中自定义的类里面的字段,而 data[k] 就是方法里对它赋的值,在前面已经说过类里的字段是使用的前台控件id后缀 加上与 “fld_” id前缀拼接就组成了完整的id,自己就可以进行赋值了。

    另一种是 [{"name":"Liza", "password":"123"}, {"name":"Mike", "password":"456"}] json数组的处理

    for(var i in packJson){//遍历packJson 数组时,i为索引
    alert(packJson[i].name + " " + packJson[i].password);
    }
    这种的由于没有尝试过,暂时先记下来,以后肯定有用得到的地方。
    这次的总结记录就这么多。
  • 相关阅读:
    samba服务器之无认证进入共享目录
    中断
    html里<div> <br /> <p>三者区别
    块级元素和内联元素
    div和span标签
    django添加装饰器
    cookie和session
    Django报错:__init__() missing 1 required positional argument: 'on_delete'
    pycharm创建新django app
    djiango控制语句
  • 原文地址:https://www.cnblogs.com/HulkDeng/p/13373165.html
Copyright © 2011-2022 走看看