簡單的form表單需要寫篇博文嗎?是的,踩過坑就要一一記錄下,以防下次再遇到不用再去試錯.可以節省大量時間。
一個form表單提交,只需要$(‘#form’).submit();不就可以完成了嗎?這樣單純的提交是沒任何問題的,但如果還需要關閉form、刷新父頁面這樣是行不通的。同時加了刷新父頁面和關閉本窗口,窗口是不會關閉的,所以只有用另一種方式
此方式除了需要引入jQuery.js,還需要JQuery-form.js
具體步驟:
1.引入文件
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.7.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>js/jquery-form3.5.js"></script>
2.編寫JS腳本
var opinion = encodeURI(encodeURI(desc));
$("form").ajaxSubmit({
type: 'get',
url: "<%=basePath%>****Action.do?operation=updateState&formBO.oid="+formID
+"&formBO.formNo="+formNO+"&opinion="+opinion,
dataType: "json",
/* data:{
opinion:opinion
此處傳數據,後臺接收不到值,還未找到原因,只能通過URL傳參
}, */
success: function(data){
alert("保存成功");
window.opener.queryList();//調用父窗口的查詢方法
window.close();
},
error: function(data)
{
alert("保存成功");
}
});
3.<form enctype="multipart/form-data">//增加此屬性值
這樣數據就可以在後臺接收到。但有個問題就是URL傳中文是會有亂碼的。又是各種糾結,最後找到了解決方式
1在前端把需要傳中文的字符串編碼
opinion = encodeURI(encodeURI(desc));//兩次編碼 (爲什麼兩次編碼,在擴展裏有)
2.後臺解碼
String opinion = java.net.URLDecoder.decode(deliveryBatchForm.getOpinion(),"utf-8");
就可以完成了
擴展
https://www.cnblogs.com/zhuxiaojie/p/4783939.html