POST请求到新的页面

来源:互联网 发布:php cgi.exe 命令行 编辑:程序博客网 时间:2024/06/06 16:43

1) 问题的提出

通过GET请求传递的参数有限,而且window.open(); 只适用于GET请求;如果通过POST请求传递参数,则需要自己封装函数来实现

2) 具体实现

⑴ 传递JSON

① 传递JSON,通过jQuery实现

    /**     * POST请求到新的窗口,传递JSON,通过jQuery实现     *      * @param url 请求路径     * @param json JSON字符串     */    function postToNewTabWithJSONByjQuery(url, json) {        var $form = $('<form action="' + url + '" method="POST" target="_blank" style="display:none;"></form>');        for (var param in json) {            $form.append('<input type="hidden" name="' + param + '" value="' + json[param] + '" />');        }        $("body").append($form);        $form.submit();        $form.remove();    };

② 传递JSON,通过JavaScript实现

    /**     * POST请求到新的窗口,传递JSON,通过JavaScript实现     *     * @param url 请求路径     * @param json JSON字符串     */    function postToNewTabWithJSONByJavaScript(url, json) {        var form = document.createElement("form");        form.action = url;        form.method = "POST";        form.target = "_blank";        form.style.display = "none";        var hidden;        for (var param in json) {            hidden = document.createElement("input");            hidden.type = "hidden"            hidden.name = param;            hidden.value = json[param];            form.appendChild(hidden);        }        document.body.appendChild(form);        form.submit();        document.body.removeChild(form);    };

⑵ 传递Array数组

① 传递Array数组,通过jQuery实现

    /**     * POST请求到新的窗口,传递Array数组,通过jQuery实现     *     * @param url 请求路径     * @param array Array数组     */    function postToNewTabWithArrayByjQuery(url, array) {        var $form = $('<form action="' + url + '" method="POST" target="_blank" style="display:none;"></form>');        for (var element in array) {            for (var param in array[element]) {                $form.append('<input type="hidden" name="' + param + '" value="' + array[element][param] + '" />');            }        }        $("body").append($form);        $form.submit();        $form.remove();    };

② 传递Array数组,通过JavaScript实现

    /**     * POST请求到新的窗口,传递Array数组,通过JavaScript实现     *     * @param url 请求路径     * @param array Array数组     */    function postToNewTabWithArrayByJavaScript(url, array) {        var form = document.createElement("form");        form.action = url;        form.method = "POST";        form.target = "_blank";        form.style.display = "none";        var hidden;        for (var element in array) {            for (var param in array[element]) {                hidden = document.createElement("input");                hidden.type = "hidden"                hidden.name = param;                hidden.value = array[element][param];                form.appendChild(hidden);            }        }        document.body.appendChild(form);        form.submit();        document.body.removeChild(form);    };

3) 使用示例

    var url = "???";    var person = {        "id": "1",        "name": "张三",        "age": 14    };    postToNewTabWithJSONByjQuery(url, person);

    var url = "???";    var array = new Array();    var person1 = {        "persons[0].id": "1",        "persons[0].name": "张三",        "persons[0].age": 14    };    var person2 = {        "persons[1].id": "2",        "persons[1].name": "李四",        "persons[1].age": 12    };    array.push(person1);    array.push(person2);    postToNewTabWithArrayByJavaScript(url, array);