每当我单击表单上的按钮时,我想向 session 数组添加一个值。我尝试使用 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 行是我试图回显 session 变量的部分。
Notice: Undefined index: name in ....main.php on line 23
我尝试 print_r($_SESSION);我得到的不是 echo,而是“Array ( )”
最佳答案
如果您使用 ajax 提交,则实际上并不需要表单
。
submit
是一个保留关键字,您不应将其用作 id
、class
或 name
。< br/>
它有 bug 的倾向...
尝试将其作为您的 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'];
?>
关于javascript - 无法使用 jquery 和 php 设置 session ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39841715/