国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript巧用eval函數(shù)組裝表單輸入項為json對象的方法

2024-05-06 16:25:15
字體:
供稿:網(wǎng)友

這篇文章主要介紹了javascript巧用eval函數(shù)組裝表單輸入項為json對象的方法,實例分析了JavaScript使用eval函數(shù)動態(tài)構(gòu)造json對象的相關(guān)技巧,需要的朋友可以參考下

本文實例講述了javascript巧用eval函數(shù)組裝表單輸入項為json對象的方法。分享給大家供大家參考,具體如下:

在ajax方式做web開發(fā)時,經(jīng)常會遇到會保存前,收集表單輸入項,組成json對象,然后把對象直接post到服務(wù)端的場景

常規(guī)做法是在js里寫類似如下的代碼:

 

 
  1. var myObj = {};  
  2. myObj.x = document.getElementById("x").value;  
  3. myObj.y = document.getElementById("y").value; 
  4. //...  
  5. //然后ajax post或get提交 

表單元素不多的時候,這樣還好,但是如果一個表單有好幾十項甚至更多輸入項的時候,寫這種代碼就太費勁了。

好在javascript中有一個邪惡的eval函數(shù),可以幫我們完成一些類似c#反射的工作,比如下面這樣:

 

 
  1. eval('A={}'); 
  2. if (A.b==undefined) 
  3. A.b = {}; 
  4. eval('A.b.c = 1'); 
  5. alert(A.b.c); 

這樣,我們就動態(tài)創(chuàng)建了一個復(fù)合對象A,明白其中原理后,可以對表單做些改進(jìn):

 

 
  1. 運單號:<input type="text" name="AwbPre" value="112" style="width:40px"/>-<input type="text" name="AwbNo" value="12312311"/><br/> 
  2. 結(jié)算方式: 
  3. <select name="SettlementMode" style="width:100px"
  4. <option value="CASH" selected="selected">現(xiàn)金</option> 
  5. <option value="MONTH">月結(jié)</option> 
  6. </select> 
  7. <br/> 
  8. 不需要賦值的屬性:<input type="input" name="NotMe" value="NotMe ..." isModel="false"/> 
  9. <script type="text/javascript"
  10. function setFormModel(modelName){ 
  11. eval(modelName + "={}"); 
  12. var inputArr = document.getElementsByTagName("INPUT"); 
  13. for(var i=0;i<inputArr.length;i++){ 
  14. var isModel = inputArr[i].getAttribute("isModel"); 
  15. var itemName = inputArr[i].name; 
  16. var itemValue = inputArr[i].value;  
  17. if(isModel!="false"){ 
  18. eval(modelName + "." + itemName + "='" + itemValue + "';"); 
  19. }  
  20. var selectArr = document.getElementsByTagName("SELECT"); 
  21. for(var i=0;i<selectArr.length;i++){ 
  22. var isModel = selectArr[i].getAttribute("isModel"); 
  23. var itemName = selectArr[i].name; 
  24. var itemValue = selectArr[i].value;  
  25. if(isModel!="false"){ 
  26. eval(modelName + "." + itemName + "='" + itemValue + "';"); 
  27. }  
  28. return modelName;  
  29. setFormModel("AwbModel"); 
  30. alert("單號:" + AwbModel.AwbPre + "-" + AwbModel.AwbNo + "/n結(jié)算方式:" + AwbModel.SettlementMode + "/n不該有的屬性:" + AwbModel.NotMe); 
  31. </script> 

這樣,只要form元素的name屬性正確設(shè)置,需要收集表單對象時,調(diào)用一下setFormModel函數(shù),就能快速得到一個json對象(當(dāng)然這只是示例,僅處理了一級屬性的情況,如果有多級屬性,大家自己去擴(kuò)展吧,無非就是字符串上做些文章)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 罗定市| 克拉玛依市| 峨眉山市| 黎平县| 民勤县| 尤溪县| 泾源县| 铜梁县| 调兵山市| 阿克苏市| 海阳市| 芒康县| 新乐市| 杨浦区| 闵行区| 吉木萨尔县| 平和县| 凤翔县| 图木舒克市| 保山市| 咸宁市| 开封市| 高清| 祥云县| 南阳市| 关岭| 铁力市| 南雄市| 略阳县| 萨迦县| 张家川| 师宗县| 荥阳市| 广灵县| 马公市| 平远县| 清新县| 广南县| 新宾| 迁西县| 建宁县|