【问题标题】:Cannot set session ajax using jquery and php无法使用 jquery 和 php 设置会话 ajax
【发布时间】:2016-10-03 22:58:50
【问题描述】:

当我单击表单上的按钮时,我想向会话数组添加一个值。我尝试使用 jquery onclick、ajax 和 jquery 来实现这一点。但它似乎没有设置变量或返回任何东西。

在我的 main.php 中有

<form id="sessy">
    <input type="text" name="name" id="name">
    <button id="submit" name="submit" class="btn btn-success">Submit</button>
</form>

<script>
    $("#sessy").submit(function(){
        $.ajax({
            type: "POST",
            url: "session.php",
            data: $(this).serialize(),
            success: function(){
                // Do what you want to do when the session has been updated
            }
        });

        return false;
    });
</script>

<?php 
session_start();
echo $_SESSION['name'];

?>

在我的 session.php 中

<?php
session_start();

$_SESSION['name'][] = $_POST['name'];
?>

我在页面底部调用 jQuery.js。

它在下面给出了我,其中第 23 行是我试图回显会话变量的部分。

Notice: Undefined index: name in ....main.php on line 23

我尝试 print_r($_SESSION);而不是 echo 我得到的只是“数组()”

【问题讨论】:

  • $_SESSION['name'][] = $_POST['name'];之前添加if(!isset($_SESSION['name'])) { $_SESSION['name'] = []; }
  • session_start();必须在任何内容写入输出之前使用,提交后不会显示结果,因为页面不会重新加载,$_SESSION['name']是一个数组,所以echo $_SESSION['name'];是错了,你应该检查之前是否设置了键'name'

标签: javascript php jquery ajax session


【解决方案1】:

你真的不需要 form 是你用 ajax 提交的。
submit 是一个保留关键字,您不应将其用作idclassname
它有错误的倾向......

试试这个作为你的 main.php:

<?php
session_start();
?>
<html>
<head>
<!-- jQuery -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<div id="sessy">
    <input type="text" name="name" id="name">
    <button class="btn btn-success">Submit</button>
</div>
<br>
<div id="result"></div>
<script>
    $("#sessy .btn").click(function(){
        $.ajax({
            type: "POST",
            url: "session.php",
            data: $("#sessy #name"),
            success: function(data){
                // Do what you want to do when the session has been updated
                $("#result").html("<h2>Name «"+data+"» is in session.</h2>");
            }
        });
    });
</script>
</body>
</html>

还有你的 session.php:

<?php
session_start();

$_SESSION['name'] = $_POST['name'];
echo $_SESSION['name'];
?>

【讨论】:

  • 这会添加会话并回显它们。我希望将值添加到数组中。我该如何修改它呢?
  • 它设置 $_SESSION,它是一个数组,键 name = 通过 ajax 发送的输入值。此会话数组对于此用户是唯一的。我不明白你在这里真正想要做什么。创建一个包含许多名称的数组?
  • 目前,当我在字段中输入新名称并提交时,它会被覆盖。因此它的数组只有一个数组( [name] => dwdwdwd )。但我想要的是例如 Array ( [name1] => dwdwdwd, [name2] => jdjdjdwd, )
  • 我想将任何新值推送到数组中
  • $_SESSION['names'][] = $_POST['name'];成功了。谢谢
猜你喜欢
  • 2012-08-04
  • 2012-04-27
  • 1970-01-01
  • 2015-04-07
  • 2013-02-09
  • 2023-03-25
  • 2011-08-03
  • 1970-01-01
  • 2018-04-04
相关资源
最近更新 更多