【发布时间】:2020-12-30 01:50:48
【问题描述】:
我有两页。 mobile.html 和 video.php。 mobile.html 发送带有单个变量的ajax 发布请求。 video.php 应该读取该变量并将其传递给同一页面中的 JS 函数,该函数将更改视频控件。我尝试使用这个逻辑:
- mobile.html 发送 ajax 发布请求
- video.php 在 div 中有 PHP 代码,用于读取请求并获取变量
- 重新加载video.php,让同一页面的JS代码从div里面获取变量
- 将变量传递给 video.php 中的预期 JS 函数。
- 对视频执行函数。
这是我的代码,为简单起见,我将视频替换为 <p> 标签。 mobile.html 代码工作正常。我的问题在 video.php
mobile.html
$.post("video.php", {gesture: action}, function(response){
$("#result").html('response: '+response);
});
video.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" 和 myData: video.php 控制台中的 "PHP no post" 这没关系,因为显然我第一次运行页面时没有通过发布请求。但是,当我单击触发 mobile.html 中的发布请求的按钮时,我会在 mobile.html 控制台中获得带有正确数据的 console.log("myData: "+myData); 行的输出!不在 video.php 控制台中。意思是代码运行在mobile.html中ajax post请求的回调函数中。
我未能找到更新当前打开的 video.php 页面中的<p id="update"> 的方法。现在我什至不确定我是否可以使用 PHP,因为它只在服务器上运行,而 JS 只在 Web 浏览器上运行。
我的问题是:我可以使用 PHP 执行上述步骤吗? 如果是你能帮我找出一种方法,使用从 mobile.html 发送的 post call 来动态和即时更新 video.php 页面吗?或任何其他适用于 PHP 的方式?
如果不是,您能否建议我可以使用哪些其他语言/平台来做我想做的事情?
更新:
为了了解我想要实现的目标,我使用localstorage 做了两页。在一个窗口中打开mobil.html,然后打开video.html
在另一个窗口并排。播放视频,然后使用mobile.html 上的控件,看看它如何改变video.html 中的播放。
我希望能够做同样的事情,但远程使用PHP,因为我必须使用真正的手机而不是mobile.html
【问题讨论】:
-
您可以在调用 ajax 时在
$_SESSION中使用 store$gesture,当您来到 video.php 页面时,请检查会话值是否为空,显示该值或不要在此处直接使用 ajax重定向到所需页面。 -
有点不清楚您要在这里构建什么。我很确定 PHP 和 JS 有办法构建你想要的东西,但我认为你的方法应该不同。一旦你解释了结果应该是什么,我会尽力帮助你。
-
@EmielZuurbier 我要做的是在 video.php 中动态更新
<p>,只要它从 mobile.html 收到ajax post call。相反,我得到的是我在 video.php 中的JS代码的结果在ajax callback function的mobile.html 中执行,而不是在video.php 中更新<p> -
@Swati 我尝试仅在 video.php 中使用
$_SESSION。你的意思是我也应该在 mobile.html 中使用$_SESSION吗?
标签: javascript php html ajax post