<form id="settle_form" method="POST" action=".">
<input name="name1" >
<inpunt name="name2">
</form>
settle_form是form表单的id,.serialize()这个方法将表单中的name中的value进行实例化了变成了用&符号连接的url
例如:url是https://www.baidu.com serialaize之后就变成了将form中的name字段与对应的value进行拼接的url
https://www.badu.com?name1=a&name2=b但是这种提交方式是get提交form表单,传到Java后台英文的没问题,可是
中文的就会报乱码。这个属于url乱码,网上很多都说需要用模拟一个隐藏的form表单用post提交,就是用window.open()
使用post提交我尝试了不太好用。会开启一个空白页,不符合要求。所以查了一下,这个东西是被encodeURIComponent()
这个js方法所加密了,java端解密就可以了。
js:
var url = url = "${rc.contextPath}/report/reportExcel/";
window.open(url+"?"+$("#settle_form").serialize());
java:
String name1 = new String(request.getParamter("name1").getBytes("ISO8859-1"), "UTF-8");