一:前台封裝數據:
1.js里面先創建對象:
//封裝數據的對象
var PayObj =
{
O_NBR:"",
P_NBR:"",
O_AMOUNT:"" ,
P_DT:"",
P_HL_ZH:"",
P_PAY_TYP:"",
P_POS:"",
P_U_ZH:"",
P_U_HM:"",
P_ATTR_IMGS:"",
P_RECEIPT_NBR:""
}
2.遍歷表格封裝數據:(表格的每一行是一個JSON對象;多行就是一個JSON數組,JSON數組在弄成一個對象)
var a = JSON.parse("{\"title\":\"\",\"data\":[]}");
//封裝底部表格中的數據
var rows = document.getElementById("playlistTable").rows.length; //獲得行數(包括thead)
var colums = document.getElementById("playlistTable").rows[0].cells.length; //獲得列數
if(rows > 1){//
for (var i = 1; i < rows; i++) { //每行 從第二行開始因為第一行是表格的標題
var PayObj = new Object();//這里一定要new新的對象,要不然保存的都是一樣的數據;都是最后一行的數據
PayObj.O_NBR = O_NBR;
var tdValue = document.getElementById("playlistTable").rows[i].cells[0].innerHTML;
if(tdValue == "POS錄入"){
PayObj.P_PAY_TYP = "3";
PayObj.P_POS = document.getElementById("playlistTable").rows[i].cells[5].innerHTML;
PayObj.P_NBR = document.getElementById("playlistTable").rows[i].cells[4].innerHTML;
PayObj.P_HL_ZH = document.getElementById("playlistTable").rows[i].cells[7].innerHTML;
}
if(tdValue == "支票"){
PayObj.P_PAY_TYP = "4";
PayObj.P_NBR = document.getElementById("playlistTable").rows[i].cells[6].innerHTML;
}
if(tdValue == "銀行轉賬"){
PayObj.P_PAY_TYP = "5";
PayObj.P_U_ZH = document.getElementById("playlistTable").rows[i].cells[8].innerHTML;
PayObj.P_U_HM = document.getElementById("playlistTable").rows[i].cells[9].innerHTML;
PayObj.P_HL_ZH = document.getElementById("playlistTable").rows[i].cells[7].innerHTML;
}
if(tdValue == "建行卡收款"){
PayObj.P_PAY_TYP = "6";
}
//公共數據
PayObj.O_AMOUNT = document.getElementById("playlistTable").rows[i].cells[1].innerHTML;
PayObj.P_DT = document.getElementById("playlistTable").rows[i].cells[2].innerHTML;
PayObj.P_RECEIPT_NBR = document.getElementById("playlistTable").rows[i].cells[3].innerHTML;
PayObj.P_ATTR_IMGS = $("#imgs").val();
a.data.add(PayObj);//向JSON數組添加JSON對象的方法;很關鍵
}
///格式化數據
var obj=JSON.stringify(a);//這一行很關鍵
//異步提交數據
$.ajax({
url: "${applicationScope.rootpath}contract/savePayOffInforOfAll.action",
type: "post",
data: {'param':obj},//參數
datatype: "json",
success: function (data) {
var obj = eval("(" + data + ")");
if (obj.success) {
mini.unmask();
alert(obj.message);
location.reload();
}
else {
mini.unmask();
alert(obj.message);
}
}
});
二:后台解析數據
String param = request.getParameter("param");
JSONObject json=JSONObject.fromObject(param);
@SuppressWarnings("unchecked")
List<Map<String,String>> payList=json.getJSONArray("data");
//這樣就把數據變成list集合;以后怎么操作就方便了
三:其他相關知識
1.JSON數組的增刪JSON對象
<!DOCTYPE html>
2
3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 6 <title>javascript里面的數組,json對象,動態添加,修改,刪除示例</title> 7 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script> 8 <script type="text/javascript"> 9 var a = JSON.parse("{\"title\":\"\",\"data\":[]}"); 10 var b = JSON.parse("{\"id\":\"2\"}"); 11 var c = JSON.parse("{\"id\":\"3\"}"); 12 var d = JSON.parse("{\"id\":\"4\"}"); 13 var e = JSON.parse("{\"id\":\"5\"}"); 14 var f = JSON.parse("{\"id\":\"6\"}"); 15 function myObjectPush() { 16 debugger; 17 /* 18 javascript里面的數組,json對象,動態添加,修改,刪除示例 19 只要適合Javascript的方法都是可以用在JSON對象的數組中的!所以還有另外的方法splice( )進行crud操作! 20 */ 21 22 //增加屬性 23 $(a).attr("id", "1"); 24 //增加子對象 25 a.data.push(b); //數組最后加一條記錄 26 a.data.push(c); 27 a.data.push(d); 28 a.data.unshift(d);//數組最前面加一條記錄 29 30 //修改子對象及屬性 31 a.title = "這是json名字"; 32 33 //刪除子對象 34 //json的刪除有很多種,直接用過 delete json對象方式: 35 delete a.data[1]; 36 37 a.data.pop(); //刪除最后一項 38 a.data.shift(); //刪除第一項 39 a.data.splice(0, 1); //刪除指定子對象,參數:開始位置,刪除個數 40 41 //替換不刪除 42 a.data.splice(1, 0, e, f);//開始位置,刪除個數,插入對象 43 //替換並刪除 44 a.data.splice(0, 1, e, f);//開始位置,刪除個數,插入對象 45 } 46 </script> 47 </head> 48 <body onload="myObjectPush()"> 49 </body> 50 </html>
2. js處理json數組
JSON(JavaScript Object Notation )是一種輕量級的數據交換格式,采用完全獨立於語言的文本格式,JSON是JavaScript原生數據格式。
在JSON中,有兩種數據結構:對象和數組。
1.一個對象以“{”開始,“}”結束。每個“名稱”后跟一個“:”,“名稱/值”對之間運用“,”分隔,名稱用引號括起來,如果是字符串則必須用括號,數值類型則不需要。
例:var obj={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};
2.數組是值的有序集合,一個數組以“[”開始,以“]”結束,值之間用“,”分隔。
例:var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];
為了方便處理JSON數據,JSON提供了json.js包,下載地址:http://www.json.org/json.js
在數據傳輸流程中,json是文本,即以字符串形式傳遞,而JS操作的是json對象,所以,JSON對象和JSON字符串之間可以相互轉換。
JSON字符串:
var str1 = '{ "name": "cxh", "sex": "man" }';
JSON對象:
var str1 = { "name": "cxh", "sex": "man" };
3.JSON字符串轉換為JSON對象:
//JSON字符串轉換JSON對象
var Obj = eval('('+ str +')');
var Obj = JSON.parse(str);
var Obj = str.parseJSON();
使用的時候直接,alert(Obj.name)。
*注:如果Obj本身就是一個JSON對象,用eval()函數處理后,結果還是JSON對象,但用parseJSON()處理會拋出語法異常。
4.JSON對象轉化為JSON字符串。
var str1 = Obj.toJSONString();
var str2 = JSON.stringgify(obj);
3.js對象轉化成json數據格式
var UserObj =
{
userId:"",
userName:"",
roleId:"" ,
roleName:""
}
function submitData() {
var tb = document.getElementById(IDArray[0]);
if (tb)
{
var rows = tb.rows;
var ohjInfo;
for (var i = 1; i < rows.length; i++) {
var id = rows[i].cells[1].innerText;
var name = rows[i].cells[2].innerHTML;
var oDropDownList = rows[i].cells[3].childNodes[0];
var oText = oDropDownList.options[oDropDownList.selectedIndex].text;
var oValue = oDropDownList.options[oDropDownList.selectedIndex].value;
UserObj.userId = id;
UserObj.userName = name;
UserObj.roleId = oValue;
UserObj.roleName = oText;
var objStr = Serialize(UserObj); // js對象轉化成json數據格式
ohjInfo += objStr;
}
return ohjInfo;
}
}
function Serialize(obj){
switch(obj.constructor){
case Object:
var str = "{";
for(var o in obj){
str += o + ":" + Serialize(obj[o]) +",";
}
if(str.substr(str.length-1) == ",")
str = str.substr(0,str.length -1);
return str + "}";
break;
case Array:
var str = "[";
for(var o in obj){
str += Serialize(obj[o]) +",";
}
if(str.substr(str.length-1) == ",")
str = str.substr(0,str.length -1);
return str + "]";
break;
case Boolean:
return "\"" + obj.toString() + "\"";
break;
case Date:
return "\"" + obj.toString() + "\"";
break;
case Function:
break;
case Number:
return "\"" + obj.toString() + "\"";
break;
case String:
return "\"" + obj.toString() + "\"";
break;
}
}