【发布时间】:2020-09-21 16:25:25
【问题描述】:
我在 javascript 中有一个倒数计时器,当它结束时,我希望能够显示一个超链接或按钮,在新标签页中打开网址,同时调用一个 php 函数(这会反过来更新一段用户元数据)。
我可以做一个或另一个,但不能同时做。
以下是我迄今为止尝试过的所有内容。
有人可以帮忙吗?
仅供参考,我的网站是 wordpress.org 网站,我在 functions.php 文件中包含以下所有代码。
此代码将在新选项卡中打开超链接,但不会调用函数 updateUserEndSession:
\\
\\ bla bla javascript countdown code...
\\
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").innerHTML = '<a href="https://www.mywebsite.com/media/imagex.jpg" target="_blank">End</a>';
}
}, 1000);
</script>
</body>
</html>
<?php
}
if(isset($_POST['End_sesh'])){
updateUserEndSession();
}
function updateUserEndSession(){
$current_user_id = get_current_user_id();
update_user_meta( $current_user_id, 'insessionbool', False );
}
此代码将通过单击按钮调用函数 updateUserEndSession 但不会打开任何超链接:
\\
\\ bla bla javascript countdown code...
\\
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").innerHTML = '<form method="post" ><input type="submit" value="End" name="End_sesh"/></form>';
}
}, 1000);
</script>
</body>
</html>
<?php
}
if(isset($_POST['End_sesh'])){
updateUserEndSession();
}
function updateUserEndSession(){
$current_user_id = get_current_user_id();
update_user_meta( $current_user_id, 'insessionbool', False );
}
这段代码是我目前最好的尝试。它在新选项卡中打开超链接,但不幸的是仍然没有调用我的函数:
\\
\\ bla bla javascript countdown code...
\\
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").innerHTML = '<form method="post" action="https://www.mywebsite.com/media/imagex.jpg" target="_blank"><input type="submit" value="End" name="End_sesh"/></form>';
}
}, 1000);
</script>
</body>
</html>
<?php
}
if(isset($_POST['End_sesh']))
{
updateUserEndSession();
}
function updateUserEndSession(){
$current_user_id = get_current_user_id();
update_user_meta( $current_user_id, 'insessionbool', False );
}
【问题讨论】:
-
我认为你想要实现的可以通过异步请求服务器来完成。查找 XMLHttpRequest 和 AJAX。
-
你能检查一下
print_r($_POST);中的所有变量吗
标签: javascript php html wordpress