4

送信時に正常に機能する単純な AJAX フォームがあります。ただし、(ページを更新せずに) 同じフォームに新しいデータを入力すると、フォームが 2 回送信されます。これを 3 回行うと、フォームが 3 回送信されます。なぜこれを行うのですか?これが私のコードです:

$(document).ready(function(){
    $("#myForm").submit(function() {
        var myField = $('#myID).val();
        $.ajax({
            type: "POST",
            url: 'myFile.php',
            dataType: 'html',
            data: {myData:myField},
            success: function(data){
                alert(data);
            }
        });

        return false;
    });
});
4

3 に答える 3

11

AJAXログインフォームを開発しているときにも、同じ問題に悩まされました。数時間グーグルで調べた後、解決策を見つけました。これがお役に立てば幸いです。

基本的に、ajax リクエストが完了した後、フォームの送信アクションの現在のインスタンスをバインド解除する必要があります。return false;の前にこの行を追加します。

$("#myform").unbind('submit');

したがって、コード全体は次のようになります



    $(document).ready(function(){
        $("#myForm").submit(function() {
            var myField = $('#myID).val();
            $.ajax({
                type: "POST",
                url: 'myFile.php',
                dataType: 'html',
                data: {myData:myField},
                success: function(data){
                    alert(data);
                }
            });

            /* Add this line */
            $("#myform").unbind('submit');
            return false;
        });
    });


于 2013-03-29T17:05:19.593 に答える
0

フォームのバインドを解除すると、Ajax が壊れる可能性があります。最初にフォームを宣言する限り、それがわかりました。

$('#my_form').ajaxForm

すべてが期待どおりに機能し、標準プロトコルに従います。フォームのバインドを解除したため、フォームの送信時に「テンプレートが見つかりません」というエラーを追跡するのに 1 日を費やしました。

于 2015-02-16T17:40:10.220 に答える