前端 传表格多条数据 给后台接收 (HTML前端表格多条数据JSON封装后;异步提交到后台处理)

前端 传表格多条数据 给后台接收 (HTML前端表格多条数据JSON封装后;异步提交到后台处理)

1.多条数据采用checkBox 携带

 

 //封装数据的对象
     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:""
        }

// JSON字符串转换JSON对象

 

var a = JSON.parse("{\"title\":\"\",\"data\":[]}");

(1)JSON字符串转换JSON对象的方法有:

 

 var Obj = eval('('+ str +')');

 var Obj = JSON.parse(str);

 var Obj = str.parseJSON();

 使用的时候直接,alert(Obj.name)。

 *注:如果Obj本身就是一个JSON对象,用eval()函数处理后,结果还是JSON对象,但用parseJSON()处理会抛出语法异常。

 (2)JSON对象转化为JSON字符串。

  var str1 = Obj.toJSONString();

  var str2 = JSON.stringgify(obj);

2.遍历表格封装数据:(表格的每一行是一个JSON对象;多行就是一个JSON数组,JSON数组在弄成一个对象)

function getChecked() {
		$('input[name="check[]"]:checked').each(function() {
			var PayObj = new Object();
			roleids += $(this).val() + ",";
			requestTransNo += $(this).val()  + ",";
			cardNo += $(this).attr('cardNo') + ",";
			cardUser += $(this).attr('cardUser') + ",";
			refundAmt += $(this).attr('refundAmt') + ",";
			tranNo += $(this).attr('tranNo') + ",";
			dealDate += $(this).attr('dealDate') + ",";
			orderId += $(this).val()  + ",";

			PayObj.requestTransNo = $(this).val();
			PayObj.cardNo = $(this).attr('cardNo');
			PayObj.cardUser =  $(this).attr('cardUser');
			PayObj.dealDate = $(this).attr('dealDate');
			PayObj.orderId = $(this).val();
			PayObj.tranNo = $(this).attr('tranNo');
			PayObj.refundAmt = $(this).attr('refundAmt');
			PayObj.refundReason = document.getElementById('refundReason').value;
			alert(document.getElementById('refundReason').value);
			a.data.push(PayObj);//向JSON数组添加JSON对象的方法;很关键
		});
}
3.///格式化数据
var obj=JSON.stringify(a);//这一行很关键	

4.异步提交数据

$.ajax({
		type: "post",
		url : "${ctx}/refund/transferPaymentReback/ajaxRefundTransferPaymentReback.do",
		dataType: "json",
		cache: true,
		data:{'param':obj},
		success: function (data) {
			$("#doSave").attr("disabled",false);
			showAlertMsg(data.flag.errorMsg, {
				closeFunction: function () {
					if (data.flag.success == true) {
						window.location.href="${ctx}/member/relation/bankOfHuaXiaManager.do"
					}
				}
			});
		},
		error: function () {
			$("#doSave").attr("disabled",false);
			alertMsg(null, false, null, null, "调用接口失败,请稍后重试!");
		}
	});

 

5.后台解析接收数据

这里的JSONObject包是 net.sf.json.JSONObject

 

import net.sf.json.JSONObject;

String param = request.getParameter("param");
        JSONObject json=JSONObject.fromObject(param);
        List<Map<String,String>> payList=json.getJSONArray("data");

6.经过测试直接转为 List<Object>是可以的

List<TransferPaymentReqDTO> payListNew = json.getJSONArray("data");

如若发现转换不成对应实体类对应的list,发现list的每一个对象是JSONObject

解决方案: 采用JSONArray转换成List

String param = request.getParameter("param");
            net.sf.json.JSONObject json=net.sf.json.JSONObject.fromObject(param);
            JSONArray shareholdersBeneficiaryJSONArray= json.getJSONArray("data");
            List<MerchantShareholdersBeneficiary> shareholdersBeneficiaryCurForm =
                    JSONArray.toList(shareholdersBeneficiaryJSONArray,new MerchantShareholdersBeneficiary(),new JsonConfig());

 

 

(第二种方式):提交到后台处理

js对象转化成json数据格式

1.前端页面

var PayObj =
	{
		requestTransNo :"",
		cardNo :"",
		cardUser :""  ,
		dealDate :"",
		orderId :"",
		tranNo :"",
		refundAmt :"",
		refundReason :""
	}
	var ohjInfo = "";
	var ohjInfoEnd = "";
	
	function getChecked() {
		roleids = "";
		$('input[name="check[]"]:checked').each(function() {
			roleids += $(this).val() + ",";
			requestTransNo += $(this).val()  + ",";
			cardNo += $(this).attr('cardNo') + ",";
			cardUser += $(this).attr('cardUser') + ",";
			refundAmt += $(this).attr('refundAmt') + ",";
			tranNo += $(this).attr('tranNo') + ",";
			dealDate += $(this).attr('dealDate') + ",";
			orderId += $(this).val()  + ",";

			PayObj.requestTransNo = $(this).val();
			PayObj.cardNo = $(this).attr('cardNo');
			PayObj.cardUser =  $(this).attr('cardUser');
			PayObj.dealDate = $(this).attr('dealDate');
			PayObj.orderId = $(this).val();
			PayObj.tranNo = $(this).attr('tranNo');
			PayObj.refundAmt = $(this).attr('refundAmt');
			var objStr = Serialize(PayObj);  // js对象转化成json数据格式
			ohjInfo += objStr + ",";
		});
		ohjInfoEnd = "[" + ohjInfo.substring(0, ohjInfo.length - 1) + "]";
	}
	
	$.ajax({
		type: "post",
		url : "${ctx}/refund/transferPaymentReback/ajaxRefundTransferPaymentReback.do",
		dataType: "json",
		cache: true,
		data:{'param':ohjInfoEnd},
		success: function (data) {
			showAlertMsg(data.flag.errorMsg, {
				closeFunction: function () {
					if (data.flag.success == true) {
						window.location.href="${ctx}/member/relation/bankOfHuaXiaManager.do"
					}
				}
			});
		},
		error: function () {
			alertMsg(null, false, null, null, "调用接口失败,请稍后重试!");
		}
		});
		
		
		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;
		}

	}

2.后台接受转换参数

import com.alibaba.fastjson.JSONObject;
	
	String param = request.getParameter("param");
	
	List<App>  collection = JSONObject.parseArray(abc1, App.class);
	List<TransferPaymentReqDTO>  transferPaymentReqDTOs = new ArrayList<TransferPaymentReqDTO>();
	for(App resultOne : collection){
		TransferPaymentReqDTO new1 = new TransferPaymentReqDTO();
		new1.setRequestTransNo(resultOne.getRequestTransNo());
		transferPaymentReqDTOs.add(new1);
	}

注:App 是 和TransferPaymentReqDto 有着相同参数的实体类,但是参数格式为String类型,否则转换出错

后台接受传入接口的参数 可以是:

List<TransferPaymentReqDTO>  transferPaymentReqDTOs
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
您可以使用以下方法将前端递的多条数据插入数据库: 1. 前端多条数据以某种格式(例如JSON数组)递给后端。 2. 后端接收数据后,将其解析为数组或其他可迭代对象。 3. 遍历数据对象,逐条插入数据库。 具体实现方式取决于您使用的编程语言和数据库类型。以下是一个示例的Python代码,演示如何使用一个字段接收前端递的多条数据并插入数据库(假设使用MySQL数据库): ```python import json import mysql.connector # 连接到MySQL数据库 conn = mysql.connector.connect( host="localhost", user="your_username", password="your_password", database="your_database" ) # 获取数据库游标 cursor = conn.cursor() # 假设前端递的数据JSON数组,例如:[{"name": "John", "age": 25}, {"name": "Jane", "age": 30}] data = '[{"name": "John", "age": 25}, {"name": "Jane", "age": 30}]' # 解析JSON数据为Python对象 records = json.loads(data) # 遍历数据并插入数据库 for record in records: name = record['name'] age = record['age'] # 执行插入数据库的SQL语句 sql = "INSERT INTO your_table (name, age) VALUES (%s, %s)" values = (name, age) cursor.execute(sql, values) # 提交事务并关闭连接 conn.commit() cursor.close() conn.close() ``` 请注意,上述示例仅供参考,具体实现方式可能因您的具体情况而有所不同。另外,为了安全起见,请确保对入的数据进行适当的验证和过滤,以防止潜在的安全风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值