问题:利用window.open等方式新开页面时,会暴露路径中所携带参数。
解决方案:通过构建form表单,将参数写入表单中,并提交,代码如下:
(function(){
//设置命名空间
var CodeSTD = window.CodeSTD || {};
window.CodeSTD = CodeSTD;
/**
* 创建Form表单,在页面跳转时,隐藏路径中的参数信息
* @author shaohsuai
* @param config Object
* <p>url:form的Action,提交的后台地址</p>
* <p>method:使用POST还是GET提交表单</p>
* <p>params:参数 K-V</p>
* @return Form
*/
CodeSTD.form = function(config){
config = config || {};
var url = config.url,
method = config.method || 'GET',
params = config.params || {};
var form = document.createElement('form');
form.action = url;
form.method = method;
form.target = "_blank";
for(var param in params){
var value = params[param],
input = document.createElement('input');
input.type = 'hidden';
input.name = param;
input.value = value;
form.appendChild(input);
}
return form;
}
})()
function f_status(id){
//window.open("${ctx}/sbgl/sbgl!getHostStautsInfo?hostid="+id);
var form = new CodeSTD.form({
url:'${ctx}/sbgl/sbgl!getHostStautsInfo',
method:'POST',
params:{
hostid:id,
}
})
$(form).submit();
form = null;
}