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

自定义服务页按钮:点击传递service_id并跳转至新页面

问题解决:点击按钮传递service_id并打开目标页面

核心问题分析

你当前的AJAX代码仅完成了后台POST请求,但AJAX是异步后台交互,不会触发浏览器打开新页面。要实现「点击按钮后传递参数并立即打开目标页面」,需要改用页面跳转或动态表单提交的方式,以下是两种可行方案:


方案1:GET方式跳转(最简单直观)

1. 优化Smarty模板(简化参数存储)

<a class="menuitm menu-auto" id="gotozabbixlist" data-service-id="{php} echo $_REQUEST['id']; {/php}">
    <span>Zabbix host list</span>
</a>

也可以保留你原来的hidden输入框,后续JS读取secretid的值即可

2. 修改JS点击事件

$('#gotozabbixlist').on('click', function (e) {
    e.preventDefault(); // 阻止a标签默认行为(如果存在)
    // 获取service_id
    let id = $(this).data('service-id'); 
    // 或者用你原来的方式:let id = document.getElementById('secretid').value;
    // 构造带参数的URL并跳转
    let url = 'http://www.website.com/bla/bla/zabbixhost.php?id=' + encodeURIComponent(id);
    window.open(url); // 打开新窗口,用location.href = url; 则跳转当前页面
});

3. zabbixhost.php接收参数

<?php
print_r($_GET); // 用GET接收参数,也可以用$_REQUEST兼容GET/POST
?>

方案2:POST方式跳转(参数不暴露在URL)

如果需要隐藏参数,可通过动态创建表单提交实现:

1. 模板(同方案1,或保留原hidden输入)

<a class="menuitm menu-auto" id="gotozabbixlist" data-service-id="{php} echo $_REQUEST['id']; {/php}">
    <span>Zabbix host list</span>
</a>

2. 修改JS点击事件

$('#gotozabbixlist').on('click', function (e) {
    e.preventDefault();
    let id = $(this).data('service-id');
    let url = 'http://www.website.com/bla/bla/zabbixhost.php';

    // 创建临时表单
    let form = $('<form>', {
        'method': 'POST',
        'action': url,
        'target': '_blank' // 打开新窗口,去掉则在当前页面提交
    });

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

    // 提交并移除临时表单
    form.appendTo('body').submit().remove();
});

3. zabbixhost.php接收参数(无需修改)

<?php
print_r($_POST);
?>

内容的提问来源于stack exchange,提问作者Dmytro Kaminskyj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:52:48