window.location.href提交参数过长改为post请求
程序员文章站
2024-01-01 23:46:58
...
项目中遇到一个问题,有一个导出功能,向后台请求是get形式的,如下所示:
if (queryType != undefined && queryType == 'download') {
window.location.href = webUrl + "/orderReceiveInfo/search.dhtml?jsonStr=" + jsonStr + "&v=" + Math.random();
return;
}
由于功能改造,发现jsonStr请求参数过长,这个get请求的瓶颈所在,需要改为post,到网上找了资料,发现改为post之后,是可以向后台提交了,但是会离开原来的页面,并且无法返回,后来又找了其他方法,又在同事的帮助下,解决了此问题,如下所示:
if (queryType != undefined && queryType == 'download') {
postExcelFile(jsonStr, webUrl + "/orderReceiveInfo/search.dhtml?v=" + Math.random());
return;
}
其中queryType就是一个js参数值,jsonStr也是如此,postExcelFile方法如下:
function postExcelFile(params, url) {
var form = document.createElement("form");
form.style.display = 'none';
form.action = url;
form.method = "post";
document.body.appendChild(form);
var input = document.createElement("input");
input.type = "hidden";
input.name = "jsonStr";
input.value = params;
form.appendChild(input);
form.submit();
form.remove();
}
这样就解决了参数过长的问题,并且不会跳转到另一个页面上去,问题解决。
总结心得:
1.深入细致的思考,并持续不断的努力,尝试
2.付出努力,付出不亚于任何人的努力
if (queryType != undefined && queryType == 'download') {
window.location.href = webUrl + "/orderReceiveInfo/search.dhtml?jsonStr=" + jsonStr + "&v=" + Math.random();
return;
}
由于功能改造,发现jsonStr请求参数过长,这个get请求的瓶颈所在,需要改为post,到网上找了资料,发现改为post之后,是可以向后台提交了,但是会离开原来的页面,并且无法返回,后来又找了其他方法,又在同事的帮助下,解决了此问题,如下所示:
if (queryType != undefined && queryType == 'download') {
postExcelFile(jsonStr, webUrl + "/orderReceiveInfo/search.dhtml?v=" + Math.random());
return;
}
其中queryType就是一个js参数值,jsonStr也是如此,postExcelFile方法如下:
function postExcelFile(params, url) {
var form = document.createElement("form");
form.style.display = 'none';
form.action = url;
form.method = "post";
document.body.appendChild(form);
var input = document.createElement("input");
input.type = "hidden";
input.name = "jsonStr";
input.value = params;
form.appendChild(input);
form.submit();
form.remove();
}
这样就解决了参数过长的问题,并且不会跳转到另一个页面上去,问题解决。
总结心得:
1.深入细致的思考,并持续不断的努力,尝试
2.付出努力,付出不亚于任何人的努力