我有3页我的问题是在Ajax请求后缺少会话数据,我有一个简单的表单,如下面的代码,当我没有点击button1,并提交表单我的代码工作正常,我可以在第3页获得会话值,但如果单击button1并请求Ajax,第3页中缺少会话数据请帮助我做什么? 感谢
page1.php代码
<?php
session_start();
if(isset($_POST['firstname']) ){
$_SESSION['firstname']= $_POST['firstname'];
}
if(isset($_POST['lastname'])){
$_SESSION['lastname']= $_POST['lastname'];
}
?>
<form id="form1" action="page3.php">
First name:<br>
<input type="text" id="firstname" name="firstname" value="">
<br>
Last name:<br>
<input type="text" id="lastname" name="lastname" value="">
<br><br>
<input type="submit" value="Submit">
<br><br>
<input type="button" id="button1" value="save">
</form>
<script type="text/javascript">
$(document).ready(function(){
$('#button1').on("click",function(){
jQuery.ajax({
type: "POST",
data: $('#form1').serialize(),
url:page2.php,
dataType : 'json',
encode : true,
success: function(data){
console.log(data);
}
});
});
});
</script>
page2.php代码
<?php
session_start();
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
//some code here
?>
page3.php code
<?php
session_start();
$firstname=$_SESSION['firstname'];
$lastname=$_SESSION['lastname'];
//some code here
?>
答案 0 :(得分:2)
问题在于,当您通过jquery执行此操作时,您的page1
未刷新,这就是为什么SESSION
保存代码在页面上方没有执行的原因而您没有获得其他值页。
解决方案: -
如果page2.php
上的ajax写如下(从page1
中删除): -
if(isset($_POST['firstname']) ){
$firstname=$_POST['firstname'];
$_SESSION['firstname']=$firstname;
} if(isset($_POST['lastname'])){
$lastname=$_POST['lastname'];
$_SESSION['lastname']= $lastname;
}
如果使用表单POST
,一切正常,因为page1
之上的代码将会执行。
但在这种情况下,正确的做法是删除page1
之上的代码并将其放在page3.php
上(我上面说的相同代码) 强>