https://www.zhihu.com/question/19805411html
https://czh7867480.github.io/2016/09/25/%E5%8E%9F%E5%88%9B-%E5%B7%A5%E4%BD%9C%E4%B8%ADbug%E8%A7%A3%E5%86%B3%E4%B9%8B-%E9%98%B2%E6%AD%A2Ajax%E9%87%8D%E5%A4%8D%E6%8F%90%E4%BA%A4/git
1github
$.ajax({ url: 'login.do', data: $(this).closest('form[name="loginForm"]').serialize(), type: 'post', beforeSend: function () { //3.讓提交按鈕失效,以實現防止按鈕重複點擊 $(loginBtn).attr('disabled', 'disabled'); //4.給用戶提供友好狀態提示 $(loginBtn).text('登陸中...'); }, complete: function () { //5.讓登錄按鈕從新有效 $(loginBtn).removeAttr('disabled'); }, success: function(msg){ if (msg === 'ok') { alert('登陸成功!'); //TODO 其餘操做... } else { alert('登陸失敗,請從新登陸!'); } } });
當只須要最後一次ajaxajax
window.pendingRequests = {}; $.ajaxPrefilter(function (options, originalOptions, jqXHR) { var key = options.url+Math.random(); if (!pendingRequests[key] && key.indexOf('.html') == -1) { pendingRequests[key] =jqXHR; } for(let i in pendingRequests) if(i!=key){ pendingRequests[i].abort() } var complete = options.complete; options.complete = function (jqXHR, textStatus) { delete pendingRequests[key]; if ($.isFunction(complete)) { complete.apply(this, arguments); } }; });
window.pendingRequests = {}; $.ajaxPrefilter(function (options, originalOptions, jqXHR) { var key=options.url; if (!pendingRequests[key] && key.indexOf('.html') == -1) { pendingRequests[key] =jqXHR; } else if (key.indexOf('.html') == -1) { jqXHR.abort(); } var complete = options.complete; options.complete = function (jqXHR, textStatus) { delete pendingRequests[key]; if ($.isFunction(complete)) { complete.apply(this, arguments); } }; });