国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > JavaScript > 正文

json實現(xiàn)前后臺的相互傳值詳解

2019-11-20 13:29:26
字體:
供稿:網(wǎng)友

前后臺的相互傳值如果值太多,寫的麻煩累人,且容易出錯。這里整理出一套使用標記 標簽屬性的辦法來傳值, 后臺取值和前臺的綁定都有了大大的簡化。

一、把json對象轉(zhuǎn)成字符串

復(fù)制代碼 代碼如下:

$.extend({
         //將json對象轉(zhuǎn)換成字符串   [貌似jquery沒有自帶的這種方法]
         toJSONString: function (object) {
             if (object == null)
                 return;
             var type = typeof object;
             if ('object' == type) {
                 if (Array == object.constructor) type = 'array';
                 else if (RegExp == object.constructor) type = 'regexp';
                 else type = 'object';
             }
             switch (type) {
                 case 'undefined':
                 case 'unknown':
                     return;
                     break;
                 case 'function':
                 case 'boolean':
                 case 'regexp':
                     return object.toString();
                     break;
                 case 'number':
                     return isFinite(object) ? object.toString() : 'null';
                     break;
                 case 'string':
                     return '"' + object.replace(/(//|/")/g, "//$1").replace(//n|/r|/t/g, function () {
                         var a = arguments[0];
                         return (a == '/n') ? '//n' : (a == '/r') ? '//r' : (a == '/t') ? '//t' : ""
                     }) + '"';
                     break;
                 case 'object':
                     if (object === null) return 'null';
                     var results = [];
                     for (var property in object) {
                         var value = $.toJSONString(object[property]);
                         if (value !== undefined) results.push($.toJSONString(property) + ':' + value);
                     }
                     return '{' + results.join(',') + '}';
                     break;
                 case 'array':
                     var results = [];
                     for (var i = 0; i < object.length; i++) {
                         var value = $.toJSONString(object[i]);
                         if (value !== undefined) results.push(value);
                     }
                     return '[' + results.join(',') + ']';
                     break;
             }
         }
     });

二、創(chuàng)建數(shù)據(jù)容器對象 [用來綁定要傳給后臺的前臺控件值]

復(fù)制代碼 代碼如下:

 var DataClass = {
     create: function () {
                 return function () {
                     this.MyInit.apply(this, arguments);//創(chuàng)建對象的構(gòu)造函數(shù)  //arguments 參數(shù)集合  系統(tǒng)名稱 不能寫錯
                 }
             }
 }
 var MyDataPack = DataClass.create();
 MyDataPack.prototype = {
     //初始化
     MyInit: function (url, operation, params) {
                 this.data = new Object();   //所有數(shù)據(jù)容量
                 var bdata = new Object();
                 bdata.url = url;            //地址
                 bdata.operation = operation;//操作
                 bdata.params = params;      //參數(shù)
                 this.data.BasicData = bdata; //基本數(shù)據(jù)
             },
     //添加數(shù)據(jù) 如:addValue("obj", "111");
     addValue: function (p, obj) {
         this.data[p] = obj;
     },
     //取得 所有標記控件的值 并寫入數(shù)據(jù)
     getValueSetData: function (togName) {
                 var values = Object(); //值的集合
                 $("[subtag='" + togName + "']").each(function () {
                     //如果是input 類型 控件
                     if (this.localName == "input") {
                         //如果是text 控件
                         if (this.type == "text" || this.type == "hidden") {
                             values[this.id] = this.value;
                         }
                         else if (this.type == "...") {
                         }
                         //......
                     }
                     else if (this.localName == "...") {
                     }
                     //................
                 });
                 this.data[togName] = values;//添加到數(shù)據(jù)集合
             },
     //取值 如:getValue("BasicData")
     getValue: function (p) {
                 return this.data[p];
             },
     //獲取或設(shè)置url
     getUrl: function (url) {
                 if (url)
                     this.data.BasicData["url"] = url;
                 else
                     return this.data.BasicData["url"];
             }
     ,
     //取值 轉(zhuǎn)成字符串的對象 數(shù)據(jù)
     getJsonData: function () {
         return $.toJSONString(this.data);
     }
 }

三、創(chuàng)建綁定前臺數(shù)據(jù)對象 [用來讀取后臺傳過來的值,并綁定到前臺頁面]

復(fù)制代碼 代碼如下:

var MyDataBinder = {
    //綁定數(shù)據(jù)到 控件 data:數(shù)據(jù) tag:標簽
    Bind: function (data, Tag) {
        var MJson = $.parseJSON(data);
        //只綁定 標記 了的 標簽
        $("[bindtag='" + Tag + "']").each(function () {
            if (this.localName == "input") {
                if (MJson[this.id]) //如果后臺傳了值
                    $(this).attr("value", MJson[this.id]);
            }
            else if (this.localName == "...") {
            }
            //....
        });
    }
};

四、使用示例

前臺html:

復(fù)制代碼 代碼如下:

 <table>
     <tr>
         <th>一</th>
         <th>二</th>
         <th>三</th>
     </tr>
     <tr>
         <td id="td1"><input type="text" id="inp_1" subtag="subtag" bindtag="bind" /></td>
         <td id="td2"><input type="text" id="inp_2" subtag="subtag" value="我只是測試一下下" /></td>
         <td><input type="text" id="inp_3" subtag="subtag" bindtag="bind" /></td>
     </tr>      
 </table>

前臺js:

復(fù)制代碼 代碼如下:

 //====================使用示例======================================
 var MyDataPack = new MyDataPack("Handler1.ashx", "CESHI", "");
 MyDataPack.getValueSetData("subtag");//將控件數(shù)據(jù)寫入對象   “subtag”為要取 控件 值 的標簽
 //-------------------傳前臺值到后臺---------------
 $.post(MyDataPack.getUrl(), MyDataPack.getJsonData(), function (data) {
     //-------------------綁定后臺值到前臺-----------------
     MyDataBinder.Bind(data, "bind");  //"bind" 為 要綁定控件的 標簽
 });

后臺:

復(fù)制代碼 代碼如下:

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/plain";
    //====================取前臺值=============================================
    //因為后臺傳過來的是 json對象 轉(zhuǎn)換后的字符串  所以 所有數(shù)據(jù)都 做為一個參數(shù)傳過來了
    var values = context.Request.Form[0];
    //需要引入程序集System.Web.Extensions.dll
    JavaScriptSerializer _jsSerializer = new JavaScriptSerializer();
    //將 json 對象字符串  轉(zhuǎn)成 Dictionary 對象
    Dictionary<string, Dictionary<string, string>> dic = _jsSerializer.Deserialize<Dictionary<string, Dictionary<string, string>>>(values);
    //現(xiàn)在 dic 里面就包含了 所有前臺傳過來的值 想怎么用 就怎么用了。
    string inp_2 = dic["subtag"]["inp_2"];//這樣就直接取到了前臺 頁面 id為 inp_2 的 控件value 值
    //=====================傳值到前臺============================================
    Dictionary<string, string> dic2 = new Dictionary<string, string>();
    dic2.Add("inp_1", "修改1");//這里只用對應(yīng)控件id 傳值即可
    dic2.Add("inp_2", "修改2");
    dic2.Add("inp_3", "修改3");
    context.Response.Write(_jsSerializer.Serialize(dic2));
}

小伙伴們對使用json實現(xiàn)前后臺傳值是否了解清楚了呢,有問題的話,就給我留言吧

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产情侣高潮对白| 国产精品视频一区二区久久| 国产网友自拍电影在线| 男人天堂v视频| xxxx视频在线| 好吊日视频在线观看| 国产免费av网站| 国产羞羞视频| 亚洲日本一区二区三区在线观看| av二区三区| www狠狠操| 国产在线高清| 五月天天在线| 成网站在线观看人免费| 国产乱子伦三级在线播放| 尤物免费看在线视频| 国产日韩欧美第一页| 999在线视频| 日韩中文字幕久久久经典网| 青草av在线| 国产精品你懂的在线观看| 在线观看国产福利视频| 麻豆网站在线免费观看| 国产欧美日本亚洲精品一4区| 在线视频二区| 国产一级激情| 日本亚洲精品| 91亚洲欧美| 欧美性猛交xxxx免费看蜜桃| 国产精品视频福利一区二区| 久草网在线视频| 天堂网中文在线| 国产精品视频福利一区二区| 日本高清中文字幕| 18激情网站| 中文字幕不卡免费视频| www.狠狠操| 国产对白在线| 国产精品你懂的在线观看| 国产尤物视频在线| 青青青国产视频| 一本大道香蕉久久| 在线中文字幕资源| 久草亚洲一区| 开心婷婷激情五月| 午夜影院在线免费观看| 国产精品久久在线| 国产精品蜜臀| 国产视频中文字幕| 国产精品一区二区三区高清在线 | 一二三四区在线观看| 国产男女无套在线播放| 爱福利在线视频| 精品女厕厕露p撒尿| 在线视频三级| av中文资源在线| av中文字幕在线看| 青青草免费观看免费视频在线| xxx国产精品| 国产中文第一页| 国产无遮挡又黄又爽免费软件 | av三级在线观看| 久久久久久91精品色婷婷| 国产亚洲精品久久久久久移动网络 | 麻豆精品免费视频入口| www.三区| 国产在线第一页| 国产精品国产国产aⅴ| 亚洲字幕成人中文在线观看| 日本福利午夜视频在线| 尤物视频在线免费观看| av日韩在线免费| 午夜视频在线| 亚洲大香人伊一本线| 国产尤物一区二区三区| 精精国产xxxx视频在线| 懂色av中文在线| av亚洲男人天堂| 国产乱人视频免费播放| av在线日韩国产精品| 国产日韩网站| аⅴ成人天堂中文在线| 国产经典av| 成在在线免费视频| yjizz视频网站在线播放| 国产黄大片在线观看画质优化| xxxx视频在线| 亚洲成人电视网| 国产l精品国产亚洲区在线观看| 丁香花视频在线观看| 四虎成人精品在永久在线观看| 国产精品久久久久久久久鸭| 青青青青在线| 91最新在线| 97视频在线观看网站| 日本中文字幕高清视频| 免费看成年人视频在线观看| 亚洲最新永久观看在线| 国产porny蝌蚪视频| 国产寡妇树林野战在线播放| 天堂在线一二区| 国产专区在线播放| 丁香在线视频| 国产精品亚洲第五区在线| 精品孕妇一区二区三区| 青娱乐在线视频观看| 青青九九免费视频在线| av在线不卡网站| 精品一区二区观看| 精品99又大又爽又硬少妇毛片 | 久久久久久久久久久久网站| 日本成人a视频| www在线播放| 日本亚洲欧美| 欧美性猛交xxxxbbbb| 青青草免费在线视频| 久久五月精品中文字幕| 大香伊人久久| 国产精品69一区二区三区| 91香蕉视频免费在线观看| 精品黄色免费中文电影在线播放| 国产黄色免费网| 精精国产xxxx视频在线动漫| 一本免费视频| 国产免费av在线| 精品无人区乱码1区2区3区免费 | 五月天婷婷基地| 精品一区二区三区在线成人| 日本成人网址| 国产精品xxx电影| 亚洲欧美中文字幕在线观看| 欧美精品日韩少妇| 国产精品久久久久永久免费看| 国产高清自拍视频在线观看| 亚洲v片在线观看| 日本中文字幕在线视频| 午夜影院免费| 国产精品视频一区二区久久| 欧美日韩在线资源| 国产馆av播放| 国产亚洲精品午夜高清影院| 亚洲精品在线视频免费| 国产小视频在线播放| 日本卡一卡2卡3卡4精品卡网站| 88av在线| 免费日本黄色| 一区二区三区四区在线免费视频| 狠狠操狠狠色| 6699久久国产精品免费| 国产在线色视频| 99在线免费观看| 中文字幕欧美日韩在线不卡| 免费av在线| jizz性欧美| av在线天堂| 在线观看电影av| 国产高潮av| 国产福利在线播放| 2018av男人天堂| 最近中文字幕mv免费高清在线| 男人天堂99| 国产在线三区| 国产乱xxⅹxx国语对白| wwww在线观看| 在线āv视频| 在线播放av网站| av男人的天堂网| eeuss影院在线观看| 亚洲精品在线播放视频| 中文天堂av| 亚洲综合在线免费| 亚洲成人av高清| 超碰免费在线播放| 国产中文字幕在线观看| 九色福利视频| 国产性网软件大全| 国产超碰在线| 亚洲精品午夜级久久久久| 亚洲激情丁香| 在线激情小视频| 免费国产视频| 国产丝袜自拍| 亚洲欧美自拍另类| 超碰免费在线观看| 国产精品视频h| 在线播放www| 久久久久久日本一区99| 国产午夜视频| 在线中文免费视频| 欧美韩日国产| 中文字幕在线免费观看| 999国产在线视频| 麻豆网站在线| 国产小视频在线| 精品国语对白精品自拍视| 色中文字幕在线| 国产人成网在线播放va免费| 夜夜嗨yeyeh| 国产天堂在线播放视频| 日本综合一区二区三区|