javascript - 如何在 jQuery 中存储多次点击事件的 PHP session 值?

标签 javascript php jquery ajax

我尝试使用 jQuery 在单击按钮时将一些值传递给 session 变量。每个按钮都有唯一的值,我需要在单击两个按钮时显示两个按钮的值。

我遇到的问题是,只有一组值(来自最近单击的按钮)被转换为 session 变量 - 如果我单击第一个按钮,第一个值会很好地传递到 session 后端,但是单击之后的第二个按钮只会导致传递第二个值。

我的 jquery 看起来像这样:

$button_one.click(function(e) {
 e.preventDefault();
 var var_one = "value1";
 var var_two = "value2";
 $.post("sessions.php", { 'session_var_one': var_one, 'session_var_two': var_two });
});

$button_two.click(function(e) {
 e.preventDefault();
 var var_three = "value3";
 var var_four = "value4";
 $.post("sessions.php", { 'session_var_three': var_three, 'session_var_four': var_four });
});

session.php 非常简单:

<?php

 session_start();

 $_SESSION['value_one'] = $_POST['session_var_one'];
 $_SESSION['value_two'] = $_POST['session_var_two'];

 $_SESSION['value_three'] = $_POST['session_var_three'];
 $_SESSION['value_four'] = $_POST['session_var_four'];

?>

我设置了一个简单的页面来显示 session 值:

<?php
 session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php

 echo '<h5>' . $_SESSION['session_var_one'] . '</h5>';
 echo '<h5>' . $_SESSION['session_var_two'] . '</h5>';

 echo '<h5>' . $_SESSION['session_var_three'] . '</h5>';
 echo '<h5>' . $_SESSION['session_var_four'] . '</h5>';

?>

</body>
</html>

此页面仅显示上次单击的按钮的两个值 - 如果同时单击两个按钮,则不会显示两组值。

我猜测这里的问题可能是有两个单独的 AJAX 请求(每个单击函数中有一个) - 当在按钮一之后单击按钮二时,它会“忘记”第一个请求,因此不会记录值。

我已经通过将每个按钮点击值发送到不同的 session php 页面(即,button_one 转到sessions_one.php,button_two 转到sessions_two.php)来解决这个问题,但我不想创建一个新的存储每个按钮的 session 值的位置。我计划添加更多按钮,但让每个按钮都有一个单独的位置来存储其存储值似乎是一种不好的做法。

我怎样才能重写我的AJAX请求和/或sessions.php,以便我可以存储每次按钮点击的所有值?感谢您的指导,总的来说,我对 PHP 和 AJAX 非常陌生!

最佳答案

如果未提供 $_POST 变量,您的代码将仅将 NULL 放入相应的 $_SESSION 变量中。为了防止这种情况,请在执行此操作之前检查是否已提供:

<?php

session_start();

if( isset($_POST['session_var_one']) ){
    $_SESSION['value_one'] = $_POST['session_var_one'];
}
if( isset($_POST['session_var_two']) ){
    $_SESSION['value_two'] = $_POST['session_var_two'];
}

if( isset($_POST['session_var_three']) ){
    $_SESSION['value_three'] = $_POST['session_var_three'];
}
if( isset($_POST['session_var_four']) ){
    $_SESSION['value_four'] = $_POST['session_var_four'];
}

?>

关于javascript - 如何在 jQuery 中存储多次点击事件的 PHP session 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29175200/

相关文章:

javascript - 验证依赖于数据库中的值的单选按钮

javascript - 通过 ajax 调用请求页面时,Google 图表未加载

php - 如何在PHP邮件功能中发送图像

php 在我的时区获取日期

php - mysqli_free_result() 期望参数 1 为 mysqli_result,null 给定

php - 如何让JS读取PHP die抛出的代码

javascript - 如何将所有左浮动元素对齐到其父元素的中心?

javascript - 如何在 AngularJs 中打印 swal Alert 框中的数组?

javascript - 如何使用 jQuery 插入到列表中的特定位置?

javascript - 使用javascript计算两个日期之间的天数