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

如何点击HTML下拉项按钮并在JS事件中获取文本赋值给PHP变量

解决方案

1. 修复HTML的重复ID问题

你循环生成的所有<a>标签都使用了同一个id="apply_list",但HTML中ID必须唯一,这会导致点击事件只能绑定到第一个元素。把ID改为类名:

<li><a class="dropdown-item apply_list" role="button"><?php echo $mNames['mName']; ?></a></li>

2. 在JavaScript中获取点击元素的文本

修改JS代码,绑定点击事件到类选择器,通过$(this).text()获取当前点击项的文本:

$(document).ready(function(){
    $('.apply_list').click(function(){ 
        // 获取并清理文本(去除前后空格)
        const selectedName = $(this).text().trim();
        console.log(selectedName); // 可在控制台验证是否获取成功

        // 3. 将文本传递给PHP后端(通过AJAX)
        $.ajax({
            url: '你的后端处理文件.php', // 例如:handle_selection.php
            type: 'POST',
            data: { selectedName: selectedName },
            success: function(response) {
                // 后端处理完成后的回调,可根据返回值做后续操作
                console.log('数据已成功传递到PHP');
            },
            error: function(xhr, status, error) {
                console.error('数据传递失败:', error);
            }
        });
    });
});

3. 后端PHP接收并处理数据

创建一个PHP文件(比如handle_selection.php),接收前端传过来的文本,必须用预处理语句避免SQL注入:

<?php
// 数据库连接
$db = new PDO("mysql:dbname=db_project; host=localhost", "root", "");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['selectedName'])) {
    $selectedName = $_POST['selectedName'];

    // 示例:用预处理语句执行SQL查询
    $stmt = $db->prepare("SELECT * FROM `member` WHERE mName = :name");
    $stmt->bindParam(':name', $selectedName);
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // 可将处理结果返回给前端
    echo json_encode($result);
}
?>

关键提醒

  • 绝对禁止直接拼接SQL:你原代码中直接把$_GET['cId']拼进SQL的写法存在严重的SQL注入漏洞,必须改用预处理语句。
  • 前后端无法直接赋值:JavaScript运行在浏览器(前端),PHP运行在服务器(后端),只能通过HTTP请求(如AJAX)传递数据,不能直接把JS变量赋值给PHP变量。

内容的提问来源于stack exchange,提问作者YT Chen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:20:28