我不知道我的代码正在发生什么,当我运行它时,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();
  });
});


谢谢大家的回答,但希望对您有所帮助。

最佳答案

如果exam​​ple.php是处理请求的php文件,则需要将js代码更改为

$(document).ready(function(){
    $(".class").click(function(event)){
    event.preventDefault();
    var jExample = JSON.stringify(array);

    $.ajax("example.php", {
        data:{'jExam':jExample},
        type: 'POST',
        dataType: 'json'
    });
});


如果要处理响应,则应添加complete-Parameter。

您的错误是,在发送请求之前,您正在使用window.location.href重定向页面。因此,您的请求永远不会发送,并且直接通过PHP而不是AJAX而不是必要的数据来调用PHP文件。因此,您丢失了PHP文件中的数据。

07-27 18:30