1

保留中にリクエスト ajax をブロックする方法を本当に理解する必要があります。例を説明しましょう:

「共有」と呼ばれる入力タイプがあり、何かを書いてEnter ajaxを押すと、結果が取得され、mysql内に挿入されます。Enterボタンを何度も押すと、phpにコントロールがあったとしても、Enterキーを何回押したかなどの結果が得られます。コントロールphpが正しいと確信しているので、リクエストajaxの問題だと思います。どうもありがとう。

これは例のコードです:

<input type="text" class="share">

JS

$.fn.enterKey = function (fnc) { // function for check when i press enter
    return this.each(function () {
        $(this).keypress(function (ev) {
            var keycode = (ev.keyCode ? ev.keyCode : ev.which);
            if (keycode == '13') {
                fnc.call(this, ev);
            }
        })
    })
}

$('.share').enterKey(function() { // ajax request
    var comment = $(this);
    if (comment.val() != "") {
        $.ajax({
            type: "POST",
            url:  add_comment.urlRemove,
            data: "text=" + comment.val(),
            success: function(html) {
                comment.val('');
            },
            error: function(){
                alert('Error on ajax call');
            }
        }); 
    } 
    else {
        return false;
    }
});
4

1 に答える 1

1

次のように、変数を設定して、リクエストがすでに送信されているかどうかを判断できます。

var alreadySent = false;

$('.share').enterKey(function() {
    var comment = $(this);
    if (comment.val() != "") {   
        if(!requestSent) {
            // Set variable to true
            alreadySent = true;

            $.ajax({
                type: "POST",
                url:  add_comment.urlRemove,
                data: "text=" + comment.val(),
                success: function(html) {
                    // Set variable to false
                    alreadySent = false;
                    comment.val('');
                },
                error: function(){
                    // Set variable to false
                    alreadySent = false;
                    alert('Error on ajax call');
                }
           }); 
        }
    }
});
于 2013-09-11T20:15:38.000 に答える