将Session变量从Ajax发送到PHP

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

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

这是我到目前为止:

jQuery的:

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

因此,只需检查是否已单击名称为“add”的按钮(所有4个按钮都具有该名称),并抓取按钮ID并将其发送到sessions.php

PHP:

   

只需创建会话即可。

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

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

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

 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']; } 

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

解:

为4个按钮使用通用的类名 。 ( 1

然后更改您的jquery代码:

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

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

我同意@Lim H.改变你的PHP代码,就像他建议的那样。

  

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