1

我在一个页面上有 4 个按钮,每个按钮都有自己的按钮。单击按钮时,页面不会刷新,也不会打开新页面。

当按下按钮时,我想通过 Ajax 以会话的形式将该按钮的 ID 发送到 php 文件。4 个按钮中的每一个都有不同的 ID (1,2,3,4)。如果用户单击一个按钮,然后单击第二个按钮等,我想将每个单击的按钮 ID 添加到此会话中。

这是我到目前为止所拥有的:

查询:

     $(document).ready(function() {  
     $('a[name=add]').click(function(e) {
     session = $(this).attr('id')

     $.post('sessions.php', {session:session}
    );              
     });
     });

所以这只是检查是否单击了一个名为“add”的按钮(所有 4 个按钮都具有该名称),并获取按钮 ID 并将其发送到 session.php

PHP:

    <?php
    session_start();
    $_SESSION['ids'] = $_POST['session'];  
    ?>

只需创建会话。

我遇到的问题是 PHP 会话正在获取单击的第一个按钮的 ID,仅此而已。如果单击另一个按钮,Ajax 会发布按钮 ID,但会话仅保留单击的第一个按钮的 ID。

如何将单击的下一个按钮的 ID 添加到会话中。

示例:如果单击按钮 1 和 3,我需要会话具有 ID 1 和 3。

4

3 回答 3

2

这是因为 Jquery 将 name 或 id 视为唯一的。这就是为什么您的 javascript 函数只读取第一个按钮的原因。

解决方案:

为 4 个按钮使用一个通用的类名。(<a class="sessionclass otherclasses" href="#">1</a>)

然后更改您的 jquery 代码:

 $(document).ready(function() {  
     $('a.sessionclass').click(function(e) {
         session = $(this).attr('id');    
         $.post('sessions.php', {session:session}
         );              
    });
});

现在您的 php 会话应该在单击时设置适当的按钮值。

我同意@Lim H。像他建议的那样改变你的php代码。

于 2013-01-16T02:21:39.447 回答
2
session_start();

// prepare $_SESSION['ids']
if ( ! is_array($_SESSION['ids']))
{
    $_SESSION['ids'] = array();
}

// fill $_SESSION['ids'] only with new $_POST['session'] posted
if ( ! in_array($_POST['session'], $_SESSION['ids']))
{
    $_SESSION['ids'][] = $_POST['session'];
}
于 2013-01-16T02:24:32.230 回答
1
<?php
    session_start();
    $id = $_POST['session']);
    if(!isset($_SESSION['ids'])) {
        $_SESSION['ids']= array();         
    }

    $_SESSION['ids'][$id] = $_POST['session']';
?>

每次发出 AJAX 请求时,您的会话 id 都会重新初始化,因此最终只剩下一个值。因此,您可能希望为会话 id 创建一个数组,并将每个新的 id 值插入到该数组中。

于 2013-01-16T02:17:42.823 回答