使用 ajax 将 JavaScript 数组发送到 Php 不起作用

Sending JavaScript array to Php with ajax not working

提问人:carpeDiem 提问时间:7/18/2023 最后编辑:Sabin ChackocarpeDiem 更新时间:7/19/2023 访问量:48

问:

我正在尝试使用 将 JavaScript 数组的内容发送到不同的页面,但它不起作用 - 没有设置相应的...$.post$_POST

有人可以解释我怎么了吗?

这是第 1 页上的 Javascript 代码:

<script type="text/javascript">
    var i = sessionStorage.length;
    var categoriesTab = [];
    for (let j = 0; j < i; j++) {
        if (sessionStorage.getItem(sessionStorage.key(j)) == 'active') {
            categoriesTab.push(sessionStorage.key(j));
        }
    }
    const liste = document.getElementById('liste');
    liste.addEventListener('click', function (event){
        event.preventDefault();
        if (window.location.href == 'https://dom.fr/page1/'){
            $.post(
                'page2.php',
                {
                    categoriesActives : categoriesTab
                }
            )
        }
        window.location.assign('https://dom.fr/page2/');
    });
</script>

变量已设置,一切似乎都正常工作。 但是当我到达第 2 页时,是空的...... :categoriesTab$_POST

<?php

$array = [];

if (isset($_POST['categoriesActives'])) {
    $array = $_POST['categoriesActives'];
} else {
    $array = ['a', 'z', 'e', 'r'];
}

?>

javascript php jquery ajax post

评论

0赞 Rory McCrossan 7/18/2023
在提出请求之前,您是否确认包含任何实体?categoriesTab
0赞 carpeDiem 7/18/2023
是的,我做了一个控制台.log,这很好
0赞 CodeThing 7/18/2023
您看到什么错误?您是否在网络选项卡中看到呼叫正在进行?
0赞 carpeDiem 7/18/2023
在控制台和 php 日志中都没有错误,而且我在网络选项卡中没有看到调用

答:

1赞 cebe 7/18/2023 #1

您正在提出两个请求:

  1. $.post('page2.php', ...使用您指定的 POST 数据发送 AJAX POST 请求。您可以通过检查浏览器开发人员工具中的“网络”选项卡来查看该请求。page2.php
  2. window.location.assign('https://dom.fr/page2/');使用普通的 GET 请求将浏览器重定向到指定的 URL。在这种情况下,$_POST 是空的,因为它是另一个请求。

评论

0赞 carpeDiem 7/18/2023
好的,谢谢!对于 1.我看到了它,它运行正常;但是,如何在不提出第二个请求的情况下将用户重定向到第 2 页?
0赞 cebe 7/20/2023
如果你只想让用户看到第二页,你为什么要发出 AJAX 请求?为什么不发送普通的 POST 请求?
0赞 DannyP1 7/18/2023 #2

您可以将数组保存在 page2.php

$_SESSION['my-array'] = $_POST['categoriesActives'];

接下来像您一样重定向用户,但重定向到 page3.php

window.location.assign('https://dom.fr/page3/');

在page3.php中,你得到这个数组:

 $array = [];

 if (isset($_SESSION['my-array'])) {
    $array = $_SESSION['my-array'];
    unset($_SESSION['my-array']);
 } else {
    $array = ['a', 'z', 'e', 'r'];
 }