解决 地址栏参数过多的方法
(function (window) {
// *****fomr表单提交解决地址栏过长**************************************************************************************************************************
function openPostWindow(url, data, key, name) {
//首先创建一个form表单
var tempForm = document.createElement("form");
tempForm.id = "tempForm1";
//制定发送请求的方式为post
tempForm.method = "post";
//此为window.open的url,通过表单的action来实现
tempForm.action = url;
//利用表单的target属性来绑定window.open的一些参数(如设置窗体属性的参数等)
tempForm.target = name;
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < key.length; j++) {
if (i == j) {
var hideInput = document.createElement("input");
hideInput.type = "hidden";
hideInput.value = data[i];
hideInput.name = key[j];
//将input表单放到form表单里
tempForm.appendChild(hideInput);
break;
}
continue;
}
}
//此为给form表单绑定事件(onsubmit),由于存在浏览器兼容问题所以此处加了一个判断。
//但实质都是为form表单绑定一个提交事件,以便之后触发实现window.open效果
if (document.all) {
tempForm.attachEvent("onsubmit", function () { }); //IE
} else {
var subObj = tempForm.addEventListener("submit", function () { }, false); //firefox
}
//将此form表单添加到页面主体body中
document.body.appendChild(tempForm);
//然后触发onsubmit事件时执行openWindow(name)函数。因为有特定浏览器会打开一个空白页面所以这里的function(甚至整个if)可以根据情况省略,经试验这不会影响模拟window.open的效果。
$("form").trigger("onsubmit", function () { openWindow(name); });
//手动触发,提交表单
tempForm.submit();
//从body中移除form表单
document.body.removeChild(tempForm);
}
function openWindow(name) {
window.open(name, 'height=400, width=400, top=0, left=0, toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes,location=yes, status=yes');
}
// ****抛出*****************************************************************************************
window.get = {
openPostWindow: openPostWindow,
}
})(window);
使用方式:
var url = page;
var data = [datas,btnName,"个人房产查询",checkboxStr];
var keys = ["RESULT","CXFS","MKLX","checkboxStr"];
var name = "_blank"
get.openPostWindow(url,data,keys,name);