WordPress机票网站搜索提交后如何在新标签页打开URL并传递参数
方案1:直接修改现有$.redirect调用(改量最小)
你当前使用的$.redirect是jQuery Redirect插件提供的方法,本身已经支持新开标签页跳转,只需要补充两个参数即可:
- 第三个参数:请求方式,填
POST即可,和你当前默认提交方式保持一致 - 第四个参数:跳转目标,填
_blank就会新开标签页加载内容
你只需要把代码里三处$.redirect调用都按如下格式修改即可:
// 修改前的代码 $.redirect( 你的URL地址, 你的参数对象 ); // 修改后的代码 $.redirect( 你的URL地址, 你的参数对象, "POST", "_blank" );
举个实际的修改示例,往返航班的跳转代码修改后如下:
if (flightType == "rt") { $.redirect( `${baseUrl}/${fromDestination}/${toDestination}/${fromDate}-${returnDate}/${adultsQty}/${childQty}/${babyQty}/rt`, { NoOvernightStopover: noOvernightStopover, NoAirportChange: noAirportChange, PsgrDirect: directFlight, FlexDatePOST: timePickup, PsgrClass: flightClass, PsgrCarrier: selectedAirline, }, "POST", "_blank" ); } else { $.redirect( `${baseUrl}/${fromDestination}/${toDestination}/${fromDate}/${adultsQty}/${childQty}/${babyQty}/ow`, { NoOvernightStopover: noOvernightStopover, NoAirportChange: noAirportChange, PsgrDirect: directFlight, FlexDatePOST: timePickup, PsgrClass: flightClass, PsgrCarrier: selectedAirline, }, "POST", "_blank" ); }
多程航班的$.redirect调用也按同样规则补充后面两个参数即可。
方案2:手动实现POST请求新开标签页(无插件依赖)
如果你不想依赖jQuery Redirect插件的参数,可以自己封装一个跳转方法,通过动态创建表单提交到新窗口实现需求,步骤如下:
- 先在你的代码任意位置新增这个通用跳转函数:
function postToNewTab(url, data) { // 创建临时表单 const form = document.createElement('form'); form.method = 'POST'; form.action = url; form.target = '_blank'; // 核心配置:指定提交到新标签页 // 遍历参数生成隐藏域 Object.keys(data).forEach(key => { const input = document.createElement('input'); input.type = 'hidden'; input.name = key; input.value = data[key]; form.appendChild(input); }); document.body.appendChild(form); form.submit(); // 提交后移除临时表单 document.body.removeChild(form); }
- 把代码里所有的
$.redirect调用替换为postToNewTab即可,参数不需要做任何修改。
注意事项
你当前代码有setTimeout延时3秒才执行跳转的逻辑,大部分浏览器的弹窗拦截机制会拦截非用户即时触发的新开窗口,延时超过1秒的跳转被拦截的概率很高。如果出现被拦截的情况,可以把延时时间缩短到1秒以内,或者在用户点击按钮时就先打开一个空白的新标签页,等参数拼接完成后再给这个新标签页赋值跳转地址。
内容的提问来源于stack exchange,提问作者Blerdi Koliq
相关产品推荐
相关产品推荐

