【发布时间】:2016-10-11 20:28:33
【问题描述】:
我不知道我的代码发生了什么,当我运行它时,有时 SESSION 说存储了一个数组,有时却没有。我正在使用调试器来检查会话。当我使用 isset($_POST) 时,返回值始终为 false。我正在使用 ajax 将数组传递给 php。
<?php
session_start();
if(isset($_POST['jExam'])){
$decode = json_decode($_POST['jExam']);
$_SESSION['receive'] = $decode;
$product = $_SESSION['receive'];
}
else{
echo "Failed to hold<br>";
}
?>
Javascript:
$(document).ready(function(){
$(".class").click(function(event)){
event.preventDefault();
window.location.href = 'example.php';
var jExample = JSON.stringify(array);
$.ajax({
data:{'jExam':jExample},
type: 'POST',
dataType: 'json',
url: 'example.php'
});
});
编辑:
弄清楚为什么将数组存储到SESSION中,一旦我单击打开另一个页面的按钮,然后在url中输入之前的页面,数组就会存储到SESSION中。不知道为什么。仍然无法弄清楚为什么 ajax 不发送到帖子。
编辑 2:
我创建了一个处理请求的文件,称为handle.php。所以顶部的php脚本被添加到handle.php而不是网页中。但我收到“解析错误:语法错误,意外'if'(T_IF)”。上面的代码还是一样的。
handle.php:
<?php
session_start();
if(isset($_POST['jExam'])){
$decode = json_decode($_POST['jExam']);
$_SESSION['receive'] = $decode;
$product = $_SESSION['receive'];
}
else{
echo "Failed to hold<br>";
}
?>
编辑 3:
我正在使用 ajax 将数组传递给 php,以便将其存储到会话中,以便在另一个页面中使用该数组。问题是数组没有传递到 $_POST。我希望该数组实际上可以通过,以便我可以在另一个页面上使用它。
已解决:
我所做的只是添加一个具有隐藏值的表单。而实际发布的价值
<form id = "postform" action = "cart.php" method = "post">
<input type = "hidden" id="obj" name="obj" val="">
<input type = "submit" value = "Show Cart" id = "showcart">
</form>
在 Javascript 中:
$(document).ready(function(){
$("#showcart").click(function(){
var json = JSON.stringify(object)
$('#obj').val(json);
$('#obj').submit();
});
});
感谢大家的回答,但希望这对其他人有所帮助。
【问题讨论】:
-
这个问题可能是你的JS引起的。你有没有尝试在 vanilla JS 中做到这一点?
-
最好使用 print_r($_POST);在会话开始行之后。并分享结果。另请注意,要检查会话值,您必须刷新页面。
-
example.php 是当前站点,还是处理请求的 php-File?
-
example.php 是另一个页面,我应该创建一个处理请求的 php 文件吗?
-
好的,我添加了一个处理请求的php_File,仍然失败
标签: javascript php ajax session post