亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

json實現前后臺的相互傳值詳解

2024-05-06 16:13:45
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了json實現前后臺的相互傳值詳解,需要的朋友可以參考下
 

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

一、把json對象轉成字符串

 

復制代碼代碼如下:

$.extend({
         //將json對象轉換成字符串   [貌似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;
             }
         }
     });

 

二、創建數據容器對象 [用來綁定要傳給后臺的前臺控件值]

 

復制代碼代碼如下:

 var DataClass = {
     create: function () {
                 return function () {
                     this.MyInit.apply(this, arguments);//創建對象的構造函數  //arguments 參數集合  系統名稱 不能寫錯
                 }
             }
 }
 var MyDataPack = DataClass.create();
 MyDataPack.prototype = {
     //初始化
     MyInit: function (url, operation, params) {
                 this.data = new Object();   //所有數據容量
                 var bdata = new Object();
                 bdata.url = url;            //地址
                 bdata.operation = operation;//操作
                 bdata.params = params;      //參數
                 this.data.BasicData = bdata; //基本數據
             },
     //添加數據 如:addValue("obj", "111");
     addValue: function (p, obj) {
         this.data[p] = obj;
     },
     //取得 所有標記控件的值 并寫入數據
     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;//添加到數據集合
             },
     //取值 如:getValue("BasicData")
     getValue: function (p) {
                 return this.data[p];
             },
     //獲取或設置url
     getUrl: function (url) {
                 if (url)
                     this.data.BasicData["url"] = url;
                 else
                     return this.data.BasicData["url"];
             }
     ,
     //取值 轉成字符串的對象 數據
     getJsonData: function () {
         return $.toJSONString(this.data);
     }
 }

 

三、創建綁定前臺數據對象 [用來讀取后臺傳過來的值,并綁定到前臺頁面]

 

復制代碼代碼如下:

var MyDataBinder = {
    //綁定數據到 控件 data:數據 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:

 

復制代碼代碼如下:

 <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:

 

復制代碼代碼如下:

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

 

后臺:

 

復制代碼代碼如下:

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/plain";
    //====================取前臺值=============================================
    //因為后臺傳過來的是 json對象 轉換后的字符串  所以 所有數據都 做為一個參數傳過來了
    var values = context.Request.Form[0];
    //需要引入程序集System.Web.Extensions.dll
    JavaScriptSerializer _jsSerializer = new JavaScriptSerializer();
    //將 json 對象字符串  轉成 Dictionary 對象
    Dictionary<string, Dictionary<string, string>> dic = _jsSerializer.Deserialize<Dictionary<string, Dictionary<string, string>>>(values);
    //現在 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");//這里只用對應控件id 傳值即可
    dic2.Add("inp_2", "修改2");
    dic2.Add("inp_3", "修改3");
    context.Response.Write(_jsSerializer.Serialize(dic2));
}

 

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美久久精品午夜青青大伊人| 久久久中精品2020中文| 日韩精品极品在线观看播放免费视频| 亚洲国模精品私拍| 亚洲欧洲av一区二区| 国产拍精品一二三| 91高清视频在线免费观看| 日韩成人中文字幕在线观看| 久久91亚洲精品中文字幕| 久久久www成人免费精品张筱雨| 在线电影中文日韩| 欧美亚洲国产视频| 国产精品av网站| 中文字幕自拍vr一区二区三区| 欧美性色视频在线| 亚洲精品一区中文| 成人高h视频在线| 欧美精品性视频| 日韩免费视频在线观看| 亚洲国产日韩欧美在线99| 国产精品免费视频xxxx| 国产成人拍精品视频午夜网站| 久久久国产影院| 欧美日韩在线观看视频小说| 日韩av免费在线| 国产亚洲福利一区| 亚洲成人黄色网址| 日韩a**中文字幕| 国产精品jizz在线观看麻豆| 欧美激情视频一区二区三区不卡| 久久99热这里只有精品国产| 色爱av美腿丝袜综合粉嫩av| 日韩资源在线观看| 国产美女精品视频免费观看| 97在线日本国产| 欧美网站在线观看| 国产精品白丝jk喷水视频一区| 精品爽片免费看久久| 欧美丰满少妇xxxxx做受| 欧美日韩精品在线| 日韩精品中文字幕在线观看| 成人综合网网址| 国产精品视频久| 日韩h在线观看| 亚洲精品91美女久久久久久久| 欧美国产激情18| 久久五月情影视| 欧美激情国产日韩精品一区18| 亚洲在线观看视频网站| 欧美在线一区二区三区四| 欧美在线观看视频| 97国产精品人人爽人人做| 国产精品久久久久久中文字| 日韩精品日韩在线观看| 欧美理论电影网| 欧美亚洲国产视频| 国产97色在线|日韩| 欧美精品www| 亚洲国产三级网| 亚洲精品免费一区二区三区| 久久噜噜噜精品国产亚洲综合| 日本一区二三区好的精华液| 日本乱人伦a精品| 亚洲综合一区二区不卡| 欧美大片在线免费观看| 国产在线视频91| 国产精品久久久999| 色综合久久悠悠| 中文国产成人精品久久一| 中文字幕av一区二区| 精品少妇一区二区30p| 9.1国产丝袜在线观看| 成人午夜在线视频一区| 丝袜亚洲欧美日韩综合| 播播国产欧美激情| 日韩av大片免费看| 欧美丰满少妇xxxxx做受| 欧美人在线观看| 国产一区二区三区网站| 欧美成人亚洲成人日韩成人| 日韩av免费在线| 久久久久国产视频| 69av在线播放| 91免费看视频.| 亚洲激情小视频| 国产成人精品一区二区三区| 久久91亚洲精品中文字幕奶水| 欧美激情手机在线视频| 精品久久久久久久久国产字幕| 欧美激情喷水视频| 欧美午夜片在线免费观看| 久久久精品日本| 91国偷自产一区二区三区的观看方式| 国产精品久久久久免费a∨大胸| 国产丝袜视频一区| 国产欧美欧洲在线观看| 日韩成人激情在线| xxxx欧美18另类的高清| 国内精品一区二区三区四区| 日韩经典中文字幕在线观看| 亚洲国产一区二区三区四区| 午夜伦理精品一区| 国产69精品久久久久9999| 午夜精品福利视频| 欧美成人黄色小视频| 日韩在线观看免费网站| 日本高清不卡的在线| 国产精品爽黄69天堂a| 欧美色视频日本高清在线观看| 久久久亚洲欧洲日产国码aⅴ| 欧美孕妇孕交黑巨大网站| 97久久精品人人澡人人爽缅北| 亚洲一区二区黄| 欧美日韩国产一区二区三区| 精品国产一区久久久| 欧美日韩中文字幕在线视频| 九九热这里只有精品免费看| 亚洲国产成人av在线| 在线播放日韩专区| 一区二区三区天堂av| 久久99国产综合精品女同| 热99精品里视频精品| 国产精品va在线播放| 亚洲最大在线视频| 日韩视频免费中文字幕| 麻豆精品精华液| 精品视频在线播放色网色视频| 国产精品91在线| 国产精品黄色影片导航在线观看| 欧美精品www在线观看| 久久久久久久久久久国产| 亚洲精品视频网上网址在线观看| 最近2019中文字幕在线高清| 日韩视频在线观看免费| 91精品在线国产| 欧美电影免费观看网站| 午夜精品一区二区三区视频免费看| 久久久影视精品| 欧美日韩在线第一页| 国产一区欧美二区三区| 91精品在线播放| 日韩免费av在线| 精品日韩美女的视频高清| 欧美自拍视频在线观看| 亚洲福利视频网站| 欧美日韩国产专区| 欧美精品在线网站| 免费不卡在线观看av| 国产成人精品日本亚洲专区61| 亚洲成人av片在线观看| 日韩欧美福利视频| 91精品久久久久久久久久久久久| 欧美日韩亚洲成人| 国内精品久久久久久影视8| 国产精品第二页| 日韩电影免费在线观看| 亚洲影院污污.| xxx欧美精品| 久久精品视频导航| 日韩国产欧美区| 日韩中文字幕第一页| 最近2019中文免费高清视频观看www99| 97**国产露脸精品国产| 午夜伦理精品一区|