0

私は自分のサイトにコメントシステムを作成しようとしています。私はajax部分を管理し、コメントはフォームから呼び出されたphpファイルに送信されます。php-fileはデータをmysqldbに保存します。保存後、データは既存のコメントに追加されます。

私が抱えている問題は、同じページの前のコメントの後に別のコメントを投稿すると、次のコメントが2回追加されることです。もう一度やり直すと、次の1つが3回追加されます。どこかで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

Look at the submit() method:

Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.

so It should be called only once (when the page loads) and not on every submit.

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

于 2012-08-23T14:51:36.700 に答える