将 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/
中,当用户提交表单时。
我似乎基本上不明白将变量发送到另一个页面。
我尝试了 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/
中,当用户提交表单时。