重新加载页面包括每30秒或用户提交表单时

时间:2014-08-17 22:09:33

标签: javascript php jquery

我有一个包含很多内容的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>

这应该只重新加载评论部分,但相反,从这一点开始的所有内容都是空白的。

当我按提交时它的外观如何: enter image description here

当我手动重新加载该页面时:

enter image description here

我不希望整个页面刷新,因为它包含一个视频。

如何按下提交后每隔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

2 个答案:

答案 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不是您的响应的一部分?