搜尋
首頁web前端js教程json實作前後台的相互傳值詳解_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' : (n') ? '\n' : (a == 'r') ? '\r' : (a == '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($.toJString(property) ' undefined) results.push($.toJString(property) ':                      return '{' results.join(',') '}';
                    且休息;
                 case '陣列':
                     var 結果 = [];
                     for (var i = 0; i                          var value = $.toJSONString(object[i]);
                         if (value !== undefined) results.push(value);
                     }
                     return '[' results.join(',') ']';
                    且休息;
             }
         }
     });

二、建立資料容器物件 [用於綁定要傳給後台的前台控制項值]

複製程式碼程式碼如下:

 var DataClass = {
     create: function () {
                 return unction () {
                     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:

複製程式碼 程式碼如下:

 
    
        
        
        
    
    
        
        
        
           
 

前台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> dic = _jsSerializer.Deserialize>>(values);
    //現在 dic 裡面就包含了 所有前台傳過來的值 想怎麼用 就怎麼用了。
    string inp_2 = dic["subtag"]["inp_2"];//這樣就直接取到了前台 頁面 id為 inp_2 的 控件value 值
//=====================傳值到前台======================= =====================
    Dictionary dic2 = new Dictionary();
    dic2.Add("inp_1", "修改1");//這裡只用對應控制項id 傳值即可
    dic2.Add("inp_2", "修改2");
    dic2.Add("inp_3", "修改3");
    context.Response.Write(_jsSerializer.Serialize(dic2));
}

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

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
VUE3怎么使用JSON编辑器VUE3怎么使用JSON编辑器May 12, 2023 pm 05:34 PM

1、先看看效果图,可以自行选择展示效果2、这是我在vue3项目中使用的JSON编辑器,首先引入第三方插件npminstalljson-editor-vue3yarnaddjson-editor-vue33、引入到项目中//导入模块importJsonEditorVuefrom'json-editor-vue3'//注册组件components:{JsonEditorVue},4、一般后端返回的是会将JSON转为String形式我们传给后端也是通过这种形式,就可以通

SpringBoot之Json的序列化和反序列化问题怎么解决SpringBoot之Json的序列化和反序列化问题怎么解决May 12, 2023 pm 04:07 PM

控制json序列化/反序列化1.@JsonIgnoreProperties的用法@JsonIgnoreProperties(value={"prop1","prop2"})用来修饰Pojo类,在序列化和反序列化的时候忽略指定的属性,可以忽略一个或多个属性.@JsonIgnoreProperties(ignoreUnknown=true)用来修饰Pojo类,在反序列化的时候忽略那些无法被设置的属性,包括无法在构造子设置和没有对应的setter方法.2.@Js

php输出json无法解析的原因和解决方法【总结】php输出json无法解析的原因和解决方法【总结】Mar 23, 2023 pm 04:35 PM

PHP作为一种常见的编程语言,在web开发中使用广泛,其与前端交互的方式也多种多样。其中,输出Json数据是一种常见的交互方式,但有时候会碰到Json无法解析的问题。为什么会出现无法解析的情况呢?下面列举了几个可能的原因。

Java怎么调用接口获取json数据解析后保存到数据库Java怎么调用接口获取json数据解析后保存到数据库May 14, 2023 am 10:58 AM

Java调用接口获取json数据保存到数据库1.在yml文件中配置自己定义的接口URL//自己定义的JSON接口URLblacklist_data_url:接口URL2.在Controller中添加请求方法和路径/***@Title:查询*@Description:查询车辆的记录*@Author:半度纳*@Date:2022/9/2717:33*/@GetMapping("/Blacklist")publicvoidselectBlacklist(){booleana=imB

php如何将xml转为json格式?3种方法分享php如何将xml转为json格式?3种方法分享Mar 22, 2023 am 10:38 AM

当我们处理数据时经常会遇到将XML格式转换为JSON格式的需求。PHP有许多内置函数可以帮助我们执行这个操作。在本文中,我们将讨论将XML格式转换为JSON格式的不同方法。

深入解析JWT(JSON Web Token)的原理及用法深入解析JWT(JSON Web Token)的原理及用法Jan 10, 2023 am 10:55 AM

本篇文章给大家带来了关于JWT的相关知识,其中主要介绍了什么是JWT?JWT的原理以及用法是什么?感兴趣的朋友,下面一起来看一下吧,希望对大家有帮助。

java怎么校验json的格式是否符合要求java怎么校验json的格式是否符合要求May 15, 2023 pm 04:01 PM

JSONSchemaJSONSchema是用于验证JSON数据结构的强大工具,Schema可以理解为模式或者规则。JsonSchema定义了一套词汇和规则,这套词汇和规则用来定义Json元数据,且元数据也是通过Json数据形式表达的。Json元数据定义了Json数据需要满足的规范,规范包括成员、结构、类型、约束等。JSONSchema就是json的格式描述、定义、模板,有了他就可以生成任何符合要求的json数据json-schema-validator在java中,对json数据格式的校验,使用

SpringBoot怎么读取资源目录中JSON文件SpringBoot怎么读取资源目录中JSON文件May 16, 2023 pm 01:25 PM

思路使用Spring的ResourceUtils读取资源目录下的json文件。使用common-io将读取的文件转化为json字符串。使用fastjson将json字符串反序列为对象。示例1.Maven依赖pom.xml,主要是common-io、fastjson的引入。commons-iocommons-io2.11.0com.alibaba.fastjson2fastjson22.0.142.json资源文件notice.json,简单列举要使用json内容。[{"title&qu

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),