如下面的演示所示,我有一个YouTube视频,我希望能够在PHP中向数组中添加项目时播放。遗憾的是,从我尝试的内容来看,这是不可能的,因为每次我向数组添加项目时页面都会刷新。
如果没有刷新页面(迫使视频重新启动?),有没有办法实现这一目标?
代码:
<?php
if (isset($_POST['playlist'])) {
$playlist = $_POST['playlist'];
} else { // Else set my default list
$playlist = array("Be more.mp3", "Drift Away.mp3", "Panda Sneeze.mp3");
}
if (isset($_POST['name1'])) {
$playlist[] = $_POST['name1'];
}
?>
<form method="post">
<?php
foreach($playlist as $song) {
?>
<input type="hidden" name="playlist[]" value="<?php echo $song?>">
<?php
}
?>
<input type="text" name="name1"/>
<input type="submit" name="submit1"/>
</form>
<iframe width="560" height="315" src="https://www.youtube.com/embed/pzB6CxChIQk" frameborder="0" allowfullscreen></iframe>
<?php
foreach ($playlist as $value) {
echo $value."<br>";
}
?>
感谢您帮助我!
答案 0 :(得分:2)
如果您需要将这些信息存储在数据库中,或者服务器端的任何内容都不使用常规表单,请使用AJAX和JQuery。
首先创建一个div(容器)来呈现您需要信息的列表内容:
<div id="list_musics"></div>
然后创建一个页面(即page.ajax.php)来处理您的请求。如果需要,您可以将信息放在数据库或本页所需的任何内容中。此页面必须返回您要呈现的内容。
<强> HTML:强>
<input type="button" id="ajaxcaller">
<强> JQUERY:强>
$('#ajaxcaller').on('click', function(){
//AJAX CALL WITH POST METHOD
var text = $('input[name=name1]').val();
$.post(page.ajax.php,text,function(data){
//Render your content in the container created on HTML
$("#list_musics").html(data);
});
});
如果您只需要显示您在文本输入而不是存储上写的内容或处理信息,您可以使用JQUERY在您创建的容器中呈现信息。
$('#ajaxcaller').on('click', function(){
//AJAX CALL WITH POST METHOD
var text = $('input[name=name1]').val();
// PUT THE TEXT RIGHT AFTER THE CONTENT THAT ALREADY EXISTS IN THE CONTAINER
$("#list_musics").append(text);
});
看看这里的第二个选项:
答案 1 :(得分:1)
这是我的答案。这完全有效。在此脚本中,服务器检查是否存在name1请求(post或get)。如果存在,则返回已发布的字符串(仅),如果不存在,则返回已存在的字符串。 post()方法发布(获取)数据并使用innerHTML+= data + "<br>";
附加到容器
评估代码,它应该是自我解释的。
<?php
if (isset($_REQUEST['playlist'])) {
$playlist = $_REQUEST['playlist'];
} else { // Else set my default list
$playlist = array("Be more.mp3", "Drift Away.mp3", "Panda Sneeze.mp3");
}
if (isset($_REQUEST['name1'])) {
// if exists, return plain text responce. NOT HTML
$playlist[] = $_REQUEST['name1'];
echo $_REQUEST['name1'];
}
else{
?>
<html>
<head>
<title>Demo</title>
<script src="jquery.js"></script>
</head>
<body>
<script>
text= ""
function onUpdate(){
text = document.getElementById("name1").value;
}
function handler(data){
document.getElementById('container').innerHTML += data+"<br>";
}
function post(){
onUpdate();
$.get("index.php", name1="+text, handler);
}
</script>
<input type="text" name="name1" id="name1"/>
<input type="submit" name="submit1" onclick="post()"/>
<iframe width="560" height="315" src="https://www.youtube.com/embed/pzB6CxChIQk" frameborder="0" allowfullscreen></iframe>
<br>
<div id="container">
<?php
foreach ($playlist as $value) {
echo $value."<br>";
}
?>
</div>
</body>
<?php };?>
虽然它按预期工作,但我没有看到使用它的意义。只是简单的js应该工作
答案 2 :(得分:0)
您必须使用Ajax
发送表单,例如。通过jQuery.post()方法。
之后,您必须使用列表重新加载容器,或使用JavaScript
添加新项目。
答案 3 :(得分:0)
尝试使用$ .post和$ .get JQuery方法。一种方法可能是$ .post回到一个.php页面,该页面呈现一个html容器,然后使用$ .get来检索该html容器并插入到DOM中。