You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用window.open时如何隐藏URL中的数据?(jQuery场景)

解决方案

可以通过动态创建隐藏表单并以POST方式提交的方式实现,既不会把参数暴露在URL里,又能正常触发PDF下载(避免了$.post AJAX无法直接处理下载响应的问题)。

具体代码替换如下:

$("#mlt_voucher").on("click", function () {
    var checkedId = [];
    var deduction = $('#dynamicmodel-deduction_type').val();
    $.each($("input:checkbox[class=chkItem]:checked"), function(){
        checkedId.push($(this).attr("id"));
    });

    // 动态创建隐藏表单
    var form = $('<form>', {
        'action': '$deductiondown',
        'method': 'POST',
        'target': '_blank' // 保持新窗口打开的原有行为
    });

    // 添加checkedId参数(逗号分隔字符串,后端需对应解析)
    form.append($('<input>', {
        'type': 'hidden',
        'name': 'checkedId',
        'value': checkedId.join(',')
    }));

    // 添加deduction参数
    form.append($('<input>', {
        'type': 'hidden',
        'name': 'deduction',
        'value': deduction
    }));

    // 挂载表单到页面并提交,提交后移除
    form.appendTo('body').submit();
    form.remove();
});

补充说明

  • 表单的target="_blank"会让下载响应在新窗口打开,和你原来window.open的行为一致;
  • 参数通过隐藏input传递,会被放在POST请求体中,不会出现在URL里;
  • 如果你的后端框架支持直接接收数组参数,也可以循环为每个checkedId创建一个name="checkedId[]"的input,这样后端能直接拿到数组,无需处理逗号分隔的字符串。

内容的提问来源于stack exchange,提问作者Bhavesh Sahu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:45:56