我有一个包含很多内容的PHP页面,它构成了视频网站页面的各个部分。
我有一个评论部分,它将信息提交到数据库中(工作正常)。但是我需要这样做才能完成这一步,只有包含的页面/ div刷新。
这是PHP:
<form id="song-comment-form">
<input type="hidden" value="<?=$rSong->id?>" class="song-id">
<textarea class="editor" id="song-comment-textarea"></textarea><br>
<input type="submit" value="Submit"><input type="button" value="Cancel" id="hide-song-comment-form">
<hr>
</form>
<div id="player-song-comments">
<?php $showComments?>
</div>
以下是我尝试使用Javascript:
<script>
var $comments = $("#player-song-comments");
setInterval(function () {
$comments.load("/template/sections/player_comments.php #player-song-comments");
}, 30000);
</script>
这应该只重新加载评论部分,但相反,从这一点开始的所有内容都是空白的。
当我按提交时它的外观如何:
当我手动重新加载该页面时:
我不希望整个页面刷新,因为它包含一个视频。
如何按下提交后每隔30秒刷新一次刷新?
更新: 我已经尝试使用JQuery来执行它。我收到了错误:
致命错误:在第42行的/home/content/58/12052758/html/template/sections/header.php中调用非对象的成员函数query()
<script>
/*wait for the DOM to be loaded
$(document).ready(function() {
// bind 'myForm' and provide a simple callback function
$('#song-comment-form').ajaxForm(function() {
alert("Thank you for your comment!");
});
}); */ //THIS IS LINE 42
$(document).ready(function() {
var options = {
url: 'template/sections/player_comments',
target: '#player-song-comments', // target element(s) to be updated with server response
type: 'post' // 'get' or 'post', override for form's 'method' attribute
};
// bind form using 'ajaxForm'
$('#song-comment-form').ajaxForm(options);
$(document).ready(function() {
// bind 'myForm' and provide a simple callback function
$('#song-comment-form').ajaxForm(function() {
$("#player-song-comments").load('template/sections/player_comments.php');
alert("Thank you for your comment! The site is currently in maintenance and the comment won't show until you revisit this video");
});
});
});
</script>
对于那些感兴趣的人。以下是整个页面:http://pastebin.com/c0kQ3tGp
答案 0 :(得分:0)
您似乎在PHP中加载注释,据我所知,PHP只被解析一次。
我知道最简单的解决方法是使用你会刷新的iframe,但我不确定这是一个好习惯。
答案 1 :(得分:0)
因此,您的问题分为两部分:
如何在提交后按下刷新
您可以使用jquery-form
。在您的情况下,您可以将表单初始化为以下内容:
$(document).ready(function() {
var options = {
url: 'your_form_action',
target: '#player-song-comments', // target element(s) to be updated with server response
type: 'post' // 'get' or 'post', override for form's 'method' attribute
};
// bind form using 'ajaxForm'
$('#song-comment-form').ajaxForm(options);
});
您可以使用其他许多options。
或每30秒?
尝试更改
$comments.load("/template/sections/player_comments.php #player-song-comments");
到
$comments.load("/template/sections/player_comments.php"); // remove the selector
根据docs,选择器用于插入远程文档的片段。换句话说,当执行load
时,jQuery会解析返回的文档以找到元素#player-song-comments
。此元素及其内容将插入到具有结果ID的元素中,并且将丢弃检索到的文档的其余部分....我认为#player-song-comments
不是您的响应的一部分?