我有两页。mobile.html 和 video.php。mobile.html 发送ajax
带有单个变量的 post 请求。video.php 应该读取该变量并将其传递给同一页面中的 JS 函数来更改视频控件。我尝试使用这个逻辑:
mobile.html 发送 ajax post 请求
video.php 在 div 中有 PHP 代码来读取请求并获取变量
重新加载video.php并允许同一页面中的JS代码从div内部获取变量
将变量传递给 video.php 中预期的 JS 函数。
在视频上执行该功能。
这是我的代码,为了简单起见,我用标签替换了视频<p>
。mobile.html 代码工作正常。我的问题出在 video.php 中
移动.html
$.post("video.php", {gesture: action}, function(response){ $("#result").html('response: '+response); });
视频.php
<html>
<head>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
//a div to hold the value of post variable
<div id="dom-target" style="display: none">
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
if( isset($_POST["gesture"]))
{//put the variable value inside the div to fitch it later
$gesture = $_POST["gesture"];
echo $gesture;
}
else {
echo "none";
}
}
else {
echo json_encode("PHP no post");
}
?>
</div>
//p content should be updated with the value of $gesture
<p id="update">
should be updated with post variable using JS
</p>
<script>
//get post variable from the div
var div = document.getElementById("dom-target");
var myData = div.textContent;
$("#update").html(myData);
console.log("myData: "+myData);
</script>
</body>
</html>
我已经花了一周的时间试图解决这个问题,但我似乎无法得到我想要的结果,因为当我重新加载页面时,我在 ajax 回调函数中找到了我的变量:/
我当前得到的输出是 video.php 中的“PHP no post” 和 video.php 控制台中的 myData:“PHP no post” ,这没关系,因为显然我第一次运行页面时它不是通过 post 请求。但是,当我单击在 mobile.html 中触发发布请求的按钮时,我得到了该行的输出,console.log("myData: "+myData);其中包含正确的数据,但在 mobile.html 控制台中!不在 video.php 控制台中。意味着代码在mobile.html中的ajax post请求的回调函数中运行。
<p id="update">我未能找到更新当前打开的 video.php 页面的方法。现在我什至不确定我是否可以使用 PHP 来做到这一点,因为它仅在服务器上运行,而 JS 仅在 Web 浏览器上运行。
我的问题是:我可以使用 PHP 执行上述步骤吗? 如果是,您能帮我找出一种使用从 mobile.html 发送的后调用来动态即时更新 video.php 页面的方法吗?或者任何其他可以与 PHP 一起使用的方式?
如果不是,你能建议我可以使用哪些其他语言/平台来做我想做的事情吗?
呼唤远方
侃侃尔雅
Helenr