0

我有带有多个按钮的页面,有时可以非常快地点击这些按钮 - 但是 Chrome 似乎可以跟上速度?

$(document).ready(function() {
    $('.favorite-button').unbind('click').click(function() {
    addLine($(this).data('line-id'));
     });
});

addLine() 函数:

function addLine(lineID) {
    $.ajax({
        type: 'POST',
        url: 'add-line.php',
        data: { lineID : lineID },
        success: function(server_response)  {
            $('#counter-lines').html(server_response);
        }
    });
}

我该怎么做才能让 Chrome 注册并完成每个 ajax 调用?这似乎不是 Chrome 的限制——即使是两次快速点击也会导致缺少 ajax 调用......

4

2 回答 2

0

看来您只是没有按顺序获得响应。

我看到你告诉服务器给线路提供什么 ID。那么为什么不将发送的 lineID 保存在全局变量中,当您收到响应时,您可以查看它是否是对最近请求的响应。

像:

var latest_line = null;
    function addLine(lineID) {
            latest_line = lineID;
            $.ajax({
                type: 'POST',
                url: 'add-line.php',
                data: { lineID : lineID },
                success: function(server_response)  {
                    // Is this the most recent request?
                    if (latest_line == lineID)
                    {
                        $('#counter-lines').html(server_response);
                    }
                }
            });
        }
于 2013-10-26T21:18:35.113 回答
0

您的代码需要是这样的:

$(document).ready(function(){
    js_Codes();

    /* The rest of your code that will not reload after ajax request */

});

$(document).ajaxComplete(function(){
    /* Here we call the codes that will reload after your ajax request */
    js_Codes();
});

function js_Codes(){

    function clickOpenDialog(){
        $('.btOpenDialog').off('click',clickOpenDialog);
        fn_open_Dialog_Click($(this).prop('alt'), function(){$('.btOpenDialog').on('click',clickOpenDialog);});
        return false;
    };

    function fn_Open_Dialog_Click(myString){
        var myArray = myString.split(';');
        /* whatever u want with your page with a string param array */

    };

    $('.btOpenDialog').on('click',clickOpenDialog);
}

对我来说很好.. ;)

于 2016-10-10T13:52:01.617 回答