我在页面上有4个按钮,每个按钮都有自己的按钮。单击该按钮时,页面不会刷新,也不会打开新页面。
当按下按钮时,我想通过Ajax将该按钮的ID以会话的形式发送到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
session_start();
$_SESSION['ids'] = $_POST['session'];
?>
只需创建会话。
我遇到的问题是PHP会话正在获取点击的第一个按钮的ID,这就是全部。如果单击另一个按钮,则Ajax会发布按钮ID,但会话仅保留单击第一个按钮的ID。
如何添加点击会话的下一个按钮的ID。
示例:如果单击按钮1和3,我需要会话具有ID 1和3。
答案 0 :(得分:2)
这是因为Jquery将name或id视为唯一。这就是为什么你的javascript函数只读取第一个按钮。
<强>解决方案:强>
对4个按钮使用公共类名称。 (&lt; a class =“sessionclass otherclasses”href =“#”&gt; 1&lt; / a&gt;)
然后更改你的jquery代码:
$(document).ready(function() {
$('a.sessionclass').click(function(e) {
session = $(this).attr('id');
$.post('sessions.php', {session:session}
);
});
});
现在你的php会话应该在点击时设置适当的按钮值。
我同意@Lim H.改变你的PHP代码,就像他建议的那样。
答案 1 :(得分: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'];
}
答案 2 :(得分:1)
<?php
session_start();
$id = $_POST['session']);
if(!isset($_SESSION['ids'])) {
$_SESSION['ids']= array();
}
$_SESSION['ids'][$id] = $_POST['session']';
?>
每次发出AJAX请求时,您的会话ID都会重新初始化,因此最终只剩下一个值。因此,您可能希望为会话ID创建一个数组,并将每个新的id值插入到此数组中。