[英]Pass variable from PHP to HTML
我有一个页面play.html
:
<form method="post" action="play.php">
<input type="hidden" name="mp3name" value="/MP3/1.mp3">
<input type="submit" value="Play My MP# #1" />
</form>
<form method="post" action="play.php">
<input type="hidden" name="mp3name" value="/MP3/2.mp3">
<input type="submit" value="Play My MP# #2" />
</form>
这会调用另一个页面play.php
:
<?php
$formurl = "play.html" ;
$playerurl = "player.html" ;
$mymp3 = $_GET["mp3name"];
header( "Location: $playerurl?mp3name=$mymp3" );
exit ;
?>
然后它调用另一个页面player.html
:
<audio id="player" src="$mymp3" autoplay preload="auto"> </audio>
<div>
<button onclick="document.getElementById('player').play()">Play</button>
<button onclick="document.getElementById('player').pause()">Pause</button>
<button onclick="document.getElementById('player').volume+=0.1">Volume Up</button>
<button onclick="document.getElementById('player').volume-=0.1">Volume Down</button>
</div>
如何将变量从 PHP 传递到player.html
?
在使用<form method='post'..
时,您正在使用$_GET
获取变量$mymp3
,将其更改为$mymp3 = $_POST['mp3name']
;
然后,将 player.html 扩展名更改为 player.php 以在其上使用 PHP 代码。
所以,当你有你的 player.php 文件时,改变这个......
<audio id="player" src="$mymp3" autoplay preload="auto"> </audio>
对这个...
<audio id="player" src="<?php echo $mymp3 ?>" autoplay preload="auto"> </audio>
如果它只是一个纯 HTML 文件,则不能。 将其更改为 PHP 文件并使用<?= $_GET['mymp3']?>
。 在play.php
中,由于您通过 POST 传递mp3name
,因此您还需要$_POST
而不是$_GET
。
如果您不使用 PHP 5.4, <?php echo $_GET['mymp3']; ?>
<?php echo $_GET['mymp3']; ?>
将是推荐的方法(感谢@Palladium)。
可能最简单的方法(至少考虑到我们从问题中获得的信息)是摆脱从play.html
到player.html
的重定向,并从前者发出播放器,而不是让它成为静态 HTML 页面。 所以play.html
看起来像这样:
$formurl = "play.html" ;
$playerurl = "player.html";
$mymp3 = $_GET["mp3name"];
<audio id="player" src="<?php echo $mymp3; ?>" autoplay preload="auto"></audio>
<div>
<button onclick="document.getElementById('player').play()">Play</button>
<button onclick="document.getElementById('player').pause()">Pause</button>
<button onclick="document.getElementById('player').volume+=0.1">Volume Up</button>
<button onclick="document.getElementById('player').volume-=0.1">Volume Down</button>
</div>
或者是否有特殊原因需要通过重定向来实现? 如果它必须是重定向,那么它是 HTML 页面这一事实会限制您的选择,因为它不会进行服务器端处理。 您可以像您已经尝试的那样在查询字符串中传递值:
header("Location: $playerurl?mp3name=$mymp3");
但是随后您会遇到在没有服务器端处理的情况下从查询字符串中读取它的问题。 不过,您也许可以使用 JavaScript 来做到这一点。 您必须读取该值并在audio
元素上设置src
属性。 但是使用服务器端处理可能会更容易和更可靠。
完整的 html 代码、表单、整个页面都可以放在第一个 PHP 本身中。 复制第二个 HTML 中的所有内容,并将其放在原始 PHP 文件本身的底部。 删除重定向命令标头( "Location: $playerurl?mp3name=$mymp3" ); 从你的PHP。 而是用您的代码编写完整的 html 文件
<audio id="player" src="$mymp3" autoplay preload="auto"> </audio>
<div>
<button onclick="document.getElementById('player').play()">Play</button>
<button onclick="document.getElementById('player').pause()">Pause</button><button onclick="document.getElementById('player').volume+=0.1">Volume Up</button><button onclick="document.getElementById('player').volume-=0.1">Volume Down</button>
</div>
并将它们放在?> 下方。 将整个文件(底部带有完整 HTML 的 php)保存为一个扩展名为 .php 的文件。 现在,您的 HTML 代码具有已在 PHP 部分本身中定义的变量 $mymp3,其值将可用于该文件中的所有 HTML 和其他 PHP 代码。 您可以在同一个文件中添加多个 php 和 html 部分)。 将整个文件保存在一个名称中,扩展名为 .php。 为此,您不需要另一个单独的 html 文档。 在 PHP 中,您可以混合使用 PHP 代码和 HTML 页面。
这可以使用AJAX来实现( 为此,您不必将html页面的扩展名更改为 .php )。
步骤(i)-在您的html页面中启动ajax调用,只有两点需要记住。 首先,在html页面中,提及页面的URL (此处要求提及您要从中接收变量的.php页面的位置),其次,将data属性保留为空白。
步骤(ii)-现在,在您的.php页面中,在回显变量之前执行JSON编码。 现在,您可以看到可以在html页面中看到您的php变量。
这是要添加到.html页面中的AJAX代码
<script type="text/javascript">
$.ajax({
url: 'index.php',
method: 'POST',
data: {},
success : function(data) {
userListHtml = JSON.parse(data);
});
alert(userListHtml)
});
</script>
这是要添加到您的.php文件中的php代码
$userList = "some value";
$userList = json_encode($userName);
echo $userList;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.