将 javascript 字符串变量传递给另一个页面,并使用 AJAX 获取 PHP 中的变量

Pass javascript string variable to another page and get the variable in PHP with AJAX

我似乎基本上不明白将变量发送到另一个页面。 我尝试了 PHP 会话、javascript cookie 和 ajax POST 和 GET。 我正在尝试使用 jQuery 调用创建的数据发送 div 的 innerHTML, 一个名为 savedartists 的变量。它在发送页面的 console.log 中正确显示,但 $_POST['savedArtists'] 在接收页面中未定义。我花了几个小时查看此站点上的不同帖子,但无法使其正常工作。 感谢任何帮助。

<input class="et_pb_button et_pb_button_0 et_pb_bg_layout_light" onClick="savequote();" type="button" id="savedchoices" value="Commander la prestation" >

<script>
function savequote() {
    var savedartists = document.getElementById('selectedList').innerHTML;
    console.log(savedartists);
    $.ajax({
        type: "POST",
        url: 'example.com/artiste/mise-en-relation/',
        data: { savedArtists : savedartists },
        success: function(data) {
            console.log("success!");
            location.href = "example.com/artiste/mise-en-relation/";
        }
    });
}
</script>

在接收页面(例子.com/artiste/mise-en-relation/)

<?php
if(isset($_POST['savedArtists']))
{
    $uid = $_POST['savedArtists'];
    echo $uid;
} else {
    echo 'zit!';
}
?>

感谢您的宝贵时间

捕捉作为未来读者的答案...

基本上这里发生的事情是两个请求被发送到目标页面。第一个是 AJAX 请求:

$.ajax({
    type: "POST",
    url: 'example.com/artiste/mise-en-relation/',
    data: { savedArtists : savedartists },
    success: function(data) {
        //...
    }
});

这是一个 POST 请求,其中包含您期望的数据,并且工作正常。 但是,这个请求的结果被忽略了。该结果在 success 回调中可用,但代码不对其执行任何操作:

console.log("success!");
location.href = "example.com/artiste/mise-en-relation/";

相反,代码正在执行重定向。这会创建对同一页面的 second 请求(尽管它本质上与同一页面无关)。这是一个 GET 请求,不包含要发送到服务器的数据。

在最简单的情况下,您应该使用AJAX重定向用户。目前你正在混合两者。

I want to redirect to the other page.

在那种情况下,AJAX 是错误的工具。您甚至可能根本不需要 JavaScript,除非您想在提交表单之前修改该表单的 elements/values。但是,如果您只想将 POST 数据传送到另一个页面,同时将用户引导至该页面,那么一个普通的旧 HTML 表单就可以做到这一点。例如:

<form method="POST" action="example.com/artiste/mise-en-relation/">
  <input type="text" name="savedArtists">
  <button type="submit">Submit</button>
</form>

在这种情况下,用户在 <input> 中输入的任何值都将包含在 POST 请求 example.com/artiste/mise-en-relation/ 中,当用户提交表单时。