在SSM项目中,ajax不能实现跳转(反正我是不知道),href会将传参显示在url上。但有些人不想在页面跳转时,将传参显示在url中(反正我不想),就比如这种
有以下两种方法:
-
将传参数放在session中
-
用js创建动态form表单,页面跳转时,用动态表单进行post提交
以下是js创建form表单的代码:
/**
* 创建动态form表单,为了隐藏路径中的参数
*
* @param url 请求路径 如:${pageContext.request.contextPath}/homepageController/homepageUpdata
* @param type 请求类型,如:POST 或 GET
* @param jsonData 请求数据(数据为json格式),如: [{aid:55}]
* @param targetType target类型,如:'_blank'在新窗口/选项卡中打开。' _self'在同一框架中打开(默认)。'_parent'在父框架中打开。'_top'在整个窗口中打开。'framename'在指定的 iframe 中打开。
* @returns
*/
function formSubmit(url,type,jsonData,targetType) {
var dlform = document.createElement('form');
dlform.style = "display:none;";
dlform.method = type;
dlform.action = url;
dlform.target = targetType
var json = jsonData;
for(var i=0,l=json.length;i<l;i++){
for(var key in json[i]){
var hdnFilePath = document.createElement('input');
hdnFilePath.type = 'hidden';
hdnFilePath.name = key;
hdnFilePath.value = json[i][key];
}
}
dlform.appendChild(hdnFilePath);
document.body.appendChild(dlform);
dlform.submit();
document.body.removeChild(dlform);
}
以下是对formSubmit()方法的调用:
//当按钮单击时触
$(function(){
$("#updataButton").click(function(){
var url = "${pageContext.request.contextPath}/homepageController/homepageUpdata"; //请求路径
var type = "POST"; //请求类型
var jsonData = []; //构建json
jsonData.push({"commodityid":"36"}); //将传参放入json中
var targetType = "_self"; //在当前页面打开
formSubmit(url,type,jsonData,targetType)
});
});