我有一个问题。我有一个页面有一个滑块和一个按钮。在第二页上,我想读取用户发送的值。我尝试使用cookie和session来做到这一点,但是当我想在第二页上显示数据时出现问题。第二页就像延迟一样,显示之前的值。例如,我在滑块上选择值 500,单击按钮,下一页上不显示任何内容。如果我将该值更改为 1000,则下一页上将显示 500。它的工作原理就好像会话被一个发送的变量延迟了一样。
<input type="range" min="200" max="1000" value="500" step="100" class="slider" id="priceRange">
<input type="hidden" id="checkme" value="" autocomplete="off">
<button id="button" onclick="window.open('https://*****.com/second_page/', '_blank')">Open New Tab With SESSION</button>
<script>
var priceSlider = document.getElementById("priceRange");
var test = document.getElementById("checkme");
function updatePrice() {
test.value = priceSlider.value;
}
updatePrice();
$(document).ready(function() {
$('#button').click(function() {
$.ajax({
type: 'POST',
url: `${window.location.origin}/wp-admin/admin-ajax.php`,
data: { action: 'set_session_variable', buttonValue: test.value },
success: function(response) {
console.log('SESSION set successfully');
console.log(test.value);
}
});
});
</script>
函数.php
function set_session_variable() {
session_start();
$variable_value = $_POST['buttonValue'];
$_SESSION['buttonValue'] = $variable_value;
wp_send_json_success();
}
add_action('wp_ajax_set_session_variable', 'set_session_variable');
add_action('wp_ajax_nopriv_set_session_variable', 'set_session_variable');
function session_initialize() {
if ( ! session_id() ) {
session_start();
}
}
add_action( 'init', 'session_initialize' );
session_start();
echo $_SESSION['buttonValue'];
接下来我在 WordPress 中创建新页面并添加短代码来打印上面的代码:
[wp_code id="1"]
代码可以工作,但它显示的不是当前会话值,而是前一个会话值。单击按钮后是否可以在第一页滑块上传递当前选定的值并在第二页上读取它? 谢谢;)
看起来第二个页面在 ajax 调用完成处理之前就打开了。 我建议仅在 ajax 调用返回后才打开第二页的窗口。 将按钮代码更改为:
<button id="button">Open New Tab With SESSION</button>
将 jQuery 位更改为:
$(document).ready(function() {
$('#button').click(function() {
$.ajax({
type: 'POST',
url: `${window.location.origin}/wp-admin/admin-ajax.php`,
data: { action: 'set_session_variable', buttonValue: test.value },
success: function(response) {
console.log('SESSION set successfully');
console.log(test.value);
window.open('https://*****.com/second_page/', '_blank');
}
});
});