0

我正在尝试在我的网站上建立一个评论系统。我管理 ajax 部分,评论从表单提交到调用的 php 文件,然后将数据存储在 mysql db 中。存储后的数据被附加到已经存在的评论中。

我遇到的问题是,如果您在同一页面的前一条评论之后发表另一条评论,则下一条评论会添加两次。再做一次,下一个被添加三遍,依此类推。我想我在某个地方弄错了 jquery,但似乎找不到它。

这是我正在使用的表格:

    <form class="short style" id="postnewscomment" name="postnewscomment" onsubmit="javascript:postnewscomments();">
    <textarea style="width:95%;" name="commenttext" required data-required="true" placeholder="Uw comment" /></textarea>
    <input type="hidden" name="task" value="addcomment" />
    <input type="hidden" name="postername" value="<? echo $_SESSION['user_id']; ?>" />
    <input type="hidden" name="newsid" value="<? echo $newsid; ?>" />
    <div class="button">
        <button value="postnews" name="Submit" type="submit">Add Comment</button>
    </div>
    </form>

这是由表单调用的我的 jquery 代码:

function postnewscomments() {
    $("#postnewscomment").submit(function(e){    
        e.preventDefault();  
    var hasError = false;
        var url = "postnewscomments.php";
    var texttopost =    "#postnewscomment"; 
    if(hasError == false) {
        $.post(url, $(texttopost).serialize() ,function(data) {
            $(data).hide().appendTo("#newscomment").fadeIn(1000);
        // code to reset form values to empty
                $( '#postnewscomment' ).each(function(){
                this.reset();
        });
             });
    }
     return false;
     });
}
4

1 回答 1

0

submit()方法:

将事件处理程序绑定到“提交”JavaScript 事件,或在元素上触发该事件。

所以它应该只被调用一次(当页面加载时)而不是每次提交。

http://api.jquery.com/submit/

于 2012-08-23T14:51:36.700 回答