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

首頁 > 編程 > JavaScript > 正文

Bootbox將后臺JSON數據填充Form表單的實例代碼

2019-11-19 12:59:06
字體:
來源:轉載
供稿:網友

序言:

剛結束公司的三個月試用期,意味著我即將正式步入社會成為廣大從事IT行業的一員。作為一個編程小白,無論從技術層面還是知識層面都是比較薄弱的,想要成為一個優秀的程序員不斷的學習與探索是不可避免的。我相信一切的付出與收獲是成正比的!Fighting!

這幾天在做公司的實際項目的時候,需要實現選中Bootstrap table中的任意一行數據點擊編輯按鈕彈出一個模態框以表單的形式對該行數據進行編輯。獲取表格行的數據是比較方便的,具體可以查找Bootstrap table參考文檔,具體地址可以直接在瀏覽器中搜索關鍵字“Bootstrap table”查找,也可以訪問以下地址:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/。表內的數據是獲得了,那關鍵是怎樣將表內數據傳遞到模態框中的表單呢?我們知道table內的數據是從后臺傳過來的,那模態框內表單數據不是也可以從后臺直接拿!好了知道數據要從哪里來了,那現在我們需要解決的問題是怎樣確定是表格中的哪條數據傳到表單。表格中的每條數據都是有唯一標識的,可能是一個字段也可能是多個字段組成一個唯一的標識,我們就把它/它們當做是這行數據的Key,我們在控制器中將這個Key作為參數傳到后臺查找這個Key對應的數據,這樣要傳遞的數據也找到了。那就只剩將后臺數據傳輸到前臺了,想到后臺與前臺的傳值那我們就需要用到Ajax了,原生的Ajax是比較復雜的,這里我們就使用jQuery封裝好的Ajax,使用比較方便。數據是能傳遞到前臺了,那數據怎樣賦值給每個標簽呢,畢竟數據不是智能的,不能自己對號入座。接下來就是比較好玩的東西了,自己寫一個jQuery方法判斷前臺標簽的類型依次將標簽中的name值賦值JSON對象對應的屬性名字。JSON對象可以看做是一個鍵值對數組,只要獲得鍵的名字,該鍵的值也能獲得,這樣前臺的數據也能依次呈現出來。

后面我用一個小例子來模擬后臺JSON數據填充Form表單的過程,方便大家能更好的了解這個過程。以上描述與想法都是本人個人認知,寫博客也是為了記錄自己的學習收獲與心得,存在錯誤或者偏差希望能得到各位前輩糾正和指導。

預備:

接下來我們演示的例子將會用到ASP.NET MVC 、jQuery、Ajax、Bootbox、HTML等相關的知識,還不懂的小伙伴需要提前做一下功課?,F在網上的學習資源很豐富,稍微花點時間還是能學到很多東西。ASP.NET MVC相關的知識可以在博客園中很多前輩的博客中學習。Bootbox相關的可以直接去官方網站查看參考文檔,具體地址可以直接在瀏覽器中搜索關鍵字“Bootbox”查找,也可以訪問以下地址:http://bootboxjs.com/documentation.html。其他相關的知識可以在瀏覽器中搜索關鍵字“w3school”查找,也可以直接訪問以下地址:http://www.w3school.com.cn/。

項目介紹:

通過控制器創建一個Index視圖,寫入下列HTML代碼,這里我創建了一個分部視圖,不創建直接寫在同一個頁面也是一樣的效果。為了更加直觀的顯示數據傳遞時的頁面變化我就不將分部視圖外的“DIV”標簽增加“hidden”屬性。在正常的情況下,我們需要將原先頁面分部視圖中的Form表單隱藏掉,因為使用了Bootbox,在點擊“Full FORM”按鈕時會自動生成一個模態框,里面克隆了表單內的所有元素內容。

<h2>Jackson Personal Homepage</h2><div class="control-group"> <label class="control-label">Full FORM</label> <btn id="btnGet" class="btn btn-success">Full FORM</btn></div><div> @Html.Partial("_GetForm")</div>

分部視圖_GetForm.cshtml

 

<form class="form-horizontal" id="JsonForm"> <div class="control-group"> <!-- Name input--> <label class="control-label">Name</label> <div class="controls">  <input type="text" placeholder="Input Name Please" name="Name"> </div> </div> <div class="control-group"> <!-- Age input--> <label class="control-label">Age</label> <div class="controls">  <input type="text" placeholder="Input Age Please" name="Age"> </div> </div> <div class="control-group"> <label class="control-label">Gender</label> <div class="controls">  <!-- Multiple Radios -->  <label class="radio">  <input type="radio" value="Man" name="Gender">  Handsome Boy  </label>  <label class="radio">  <input type="radio" value="Woman" name="Gender">  Beautiful Girl  </label> </div> </div> <div class="control-group"> <!-- Select Basic --> <label class="control-label">Nationality</label> <div class="controls">  <select name="Nationality">  <option></option>  </select> </div> </div> <div class="control-group"> <!-- Textarea --> <label class="control-label">Specialty</label> <div class="controls">  <div class="textarea">  <textarea type="text" name="Specialty"> </textarea>  </div> </div> </div></form>

我們需要傳遞一條JSON數據,所以我就在控制器中創建了一個person對象,將這個對象轉成JSON格式來模擬,通過GetJson()這個方法傳遞給前臺。

[HttpPost]public JsonResult GetJson(){ Person person = new Person() { Name = "Jackson", Age = 24, Gender = "Man", Nationality = "China", Specialty = "Attentive And Patient" }; return Json(person);}

前臺調用GetJson()方法,需要使用Ajax,所以我們在前臺寫一個按鈕的點擊事件觸發這個方法,將數據傳遞過來,然后將數據傳入自己寫的Jquery方法,根據元素的類型判斷依次為其賦對應的值,之后執行Bootbox的dialog方法,將表單及數據通過模態框方式顯示。

<script> $("#btnGet").click(function () { $.ajax({  url: "GetJson",  type: "post",  dataType: "json",  success: function (data) {  $("#JsonForm").populateForm(data);  bootbox.dialog({   title: "This is Form :)",    message: $("#JsonForm").clone(),   buttons: {   confirm: {    label: 'Submit',    className: 'btn-success'   },   cancel: {    label: 'Quit',    className: 'btn-danger'   }   },  });  } }) })</script>

接下來是最關鍵的部分,是這個功能得以實現的核心,上述的代碼中有一句“$("#JsonForm”).populateForm(data);”這里的populateForm()就是自己定義的一個Jquery方法,代碼是參考了某位前輩的代碼,只是做出稍微修改。如果分析的復雜一點完全可以封裝成一個通用的Jquery方法以滿足不同的條件復用。以下代碼寫在一個名字為"GetJsonForm.js"的javascript文件中。

 

$.fn.populateForm = function (data) { return this.each(function () { var formElem, name; if (data === null) { this.reset(); return; } for (var i = 0; i < this.length; i++) {  formElem = this.elements[i];  name = formElem.name;  switch (formElem.type) {  case "radio":   if (data[name] === "") {   formElem.checked = false;   } else if (formElem.value === data[name]) {   formElem.checked = true;   }   break;  case "select-one":   formElem[0].value = data[name];   if (data[name] === null) {   formElem[0].text = "--";   } else {   formElem[0].text = data[name];   }   break;  case "button": break;  default:   if (data[name] === null) {   formElem.value = "--";   } else {   formElem.value = data[name];   }  } } });};

確保GetJsonForm.js以及Bootbox依賴的文件正確被引用(這里Bootbox引用的是“bootbox.min.js”,可以在起官網下載)。

以上項目就完成了...

總結分析:

需要著重分析一下"GetJsonForm.js"里的代碼,從分析的過程中我們能更加詳細的知道其實現原理,便于之后的擴展與完善,封裝成一個滿足各種條件的方法。當前項目取得是一個單一的JSON對象,但是很多情況下JSON數據可能會更加復雜,而且我們這里只試驗了對表單中其中幾種常用類型的標簽賦值,功能是不完善的。其中select標簽的賦值方式也不是很完善,只能滿足于與該項目相似的項目,完善還是需要花更多的時間。

以上是我在做項目時的獲得的所有心得,可能不是很完善也存在很多錯誤,歡迎各位糾正。

ps:在做項目的時候遇到一個問題,就是Bootbox文檔里dialog方法中的"message"可以傳html,當代碼為:

$("JsonForm”).html();

時模態框加載頁面但是只有select標簽下的option值被賦值了,其他值就是不顯示,將代碼改為:

$("JsonForm”).clone();

時就全部顯示正常了,這個問題仍然想不通...

百度云盤:鏈接:https://pan.baidu.com/s/1eL1ftDhN2_Hx9H99XmWlhQ 密碼:iuss

感興趣的小伙伴可以自行下載(IDE:visual studio 2017)

執行的結果

 

【代碼為”$("JsonForm”).clone();”時的結果】

【代碼為”$("JsonForm”).html();”時的結果】

總結

以上所述是小編給大家介紹的Bootbox將后臺JSON數據填充Form表單的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
高清在线视频日韩欧美| 亚洲欧美日韩爽爽影院| 亚洲国产欧美在线成人app| 欧美国产在线电影| 狠狠做深爱婷婷久久综合一区| 日韩av最新在线观看| 国产精品99久久久久久白浆小说| 国产精品久久婷婷六月丁香| 97av在线播放| 91中文字幕在线观看| 欧美成人免费观看| 久久偷看各类女兵18女厕嘘嘘| 狠狠色狠色综合曰曰| 久久资源免费视频| 精品国内产的精品视频在线观看| 日韩www在线| 日韩免费av在线| 成人黄色免费网站在线观看| 欧美猛交ⅹxxx乱大交视频| 北条麻妃99精品青青久久| 在线观看国产欧美| 日韩大片在线观看视频| 国产精品亚洲网站| 日韩欧美第一页| 中文亚洲视频在线| 精品高清一区二区三区| 韩国19禁主播vip福利视频| 色综合久久中文字幕综合网小说| 日韩精品在线免费观看| 精品欧美国产一区二区三区| 91青草视频久久| 搡老女人一区二区三区视频tv| 国产精品专区第二| 国产精品欧美一区二区三区奶水| 色哟哟网站入口亚洲精品| 国产日韩在线看片| 正在播放亚洲1区| 国产精品久久91| 亚洲欧美日韩精品| 隔壁老王国产在线精品| 日韩专区在线观看| 日韩欧美主播在线| 日韩经典中文字幕| 亚洲一级黄色片| 亚洲国产精品va| 中文字幕国内精品| 欧美精品久久久久a| 久久免费精品日本久久中文字幕| 久久久成人av| www国产91| 国产精品无码专区在线观看| 国产精品麻豆va在线播放| 伊人男人综合视频网| 欧美在线一区二区视频| 蜜臀久久99精品久久久无需会员| 在线中文字幕日韩| 国产精品普通话| 欧美日韩999| 精品一区二区三区三区| 国产精品久久久久久av福利| 色婷婷综合成人| 欧美成人黑人xx视频免费观看| 一二美女精品欧洲| 一区二区欧美久久| 国产一区二区三区高清在线观看| 亚洲国产精品999| 亚洲午夜国产成人av电影男同| 国产精品美女久久久久久免费| 精品国产拍在线观看| 久久免费少妇高潮久久精品99| 亚洲码在线观看| 国产成人精品国内自产拍免费看| 欧美激情视频网址| 亚洲a在线播放| 国产999精品久久久| 国产精品久久久久久久久久久久| 日韩av成人在线| 国产精品久久久久久久一区探花| 精品丝袜一区二区三区| 欧美一区二粉嫩精品国产一线天| 中文欧美日本在线资源| 国产视频一区在线| 久久精品99久久久久久久久| 亚洲无线码在线一区观看| 日韩av大片免费看| 精品成人国产在线观看男人呻吟| 91精品视频免费观看| 不用播放器成人网| 亚洲春色另类小说| 国产精品一区二区久久久| 欧美在线观看网站| 色多多国产成人永久免费网站| 国产欧美一区二区三区四区| 色悠久久久久综合先锋影音下载| 精品国产欧美一区二区五十路| 欧美激情亚洲精品| 欧美第一页在线| 精品久久久久久久久久ntr影视| 88国产精品欧美一区二区三区| 伊人亚洲福利一区二区三区| 亚洲色图50p| 九九精品在线观看| 精品一区精品二区| 亚洲全黄一级网站| 永久555www成人免费| 久久久久久久久久久人体| 日韩久久午夜影院| 国产精品色视频| 精品久久在线播放| 国产精品久久久久久久久粉嫩av| 九九久久综合网站| 国产精品7m视频| 97精品久久久| 一区二区三区四区精品| 亚洲精品久久久久国产| 日韩av网址在线| 国产一区玩具在线观看| 久久久久久亚洲精品不卡| 国产成人avxxxxx在线看| 在线视频免费一区二区| 国外视频精品毛片| 日韩精品在线观看一区| 亚洲精品v欧美精品v日韩精品| 在线日韩欧美视频| 欧美在线视频观看免费网站| 日韩欧美极品在线观看| 成人激情视频在线| 亚洲天堂影视av| 日韩中文字幕精品| 日韩视频一区在线| 久久艳片www.17c.com| 日韩综合视频在线观看| 欧美日韩性生活视频| 欧美做爰性生交视频| 久久免费成人精品视频| 亚洲第一男人天堂| 欧美黄色片在线观看| 中文字幕国内精品| 欧美精品videos另类日本| 欧美黑人性猛交| 欧美小视频在线观看| 国产精品一区二区三区久久久| 久久久久久久久中文字幕| 久久综合网hezyo| 欧美成在线观看| 欧美成人小视频| 中文字幕亚洲无线码在线一区| 日韩国产在线看| 91美女高潮出水| 亚洲一级黄色片| 欧美日韩一区二区三区| 久久免费视频观看| 日本久久久久久久久| 成人黄色激情网| 97久久精品人人澡人人爽缅北| 欧美最猛性xxxxx(亚洲精品)| 亚洲福利视频久久| 欧美日韩第一页| 最近更新的2019中文字幕| 亚洲综合一区二区不卡| 国产午夜精品视频免费不卡69堂| 欧美色视频日本版| 日韩大片免费观看视频播放| 国产一区二区成人|