1

我的页面上有一个按钮

<input type="button" onclick="someFunction()" value="submit"/>

现在,当用户单击按钮时,js 函数 someFunction() 会执行。在这个函数中,请求通过 jquery $.ajax 方法发送到服务器......

我需要知道如果用户反复单击按钮会发生什么。

jquery 是否维护请求的队列或中止先前的请求并启动新的请求..

如果 jquery 维护 que 那么如何停止/中止它们。

任何帮助都会非常感激。

4

4 回答 4

2

是的,$ajax每次点击都发出新的请求(事件触发),

不会停止/中止任何请求。

建议:在第一次单击时禁用并在响应到来后启用它。

于 2013-09-12T11:49:44.293 回答
1

您的代码需要是这样的:

    $(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:46:18.193 回答
0

您可以将 Ajax 请求存储在一个变量中:

var request = $.ajax({
    type: 'POST',
    url: 'someurl',
    success: function(result){}
});

然后你可以中止请求:

request.abort();

如果单击该按钮,您只需检查是否request设置为确保一次只进行 1 个 ajax 调用。

于 2013-09-12T11:53:13.083 回答
0
function someFunction() {
    if (this.ajaxPending) return;
    this.ajaxPending = true;
    $.ajax(...).always(function () {
        this.ajaxPending = false;
    });
}
于 2013-09-12T11:55:04.497 回答