jquery .post事件逐步触发

时间:2012-08-23 14:47:38

标签: jquery ajax forms .post

我正在尝试在我的网站上建立评论系统。我管理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;
     });
}

1 个答案:

答案 0 :(得分:0)

查看submit()方法:

  

将事件处理程序绑定到“提交”JavaScript事件或触发器   元素上的那个事件。

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

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