解决 地址栏参数过多的方法



(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);

 

posted @ 2022-06-20 16:23  前端搬运工bug  阅读(364)  评论(0编辑  收藏  举报