成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? jQuery的 $.ajax防止重復提交的兩種方法(推薦)
全站頭部文字 我要出現在這里
jQuery的 $.ajax防止重復提交的兩種方法(推薦) 717 2024-02-15   

下面給大家帶來兩種關于jquery 的ajax防止重復提交的解決方法,具體介紹如下所示:

1、第一種,對于onclick事件觸發的的ajax

可以采用如下方法:

即在beforeSend中使點擊按鈕不可用,ajax結果返回后置為可用

$.ajax(
{
type: 'POST',
url: APP+'?m=Shopping&a=ajaxSubmitorder&sid='+sid+'&src='http://www.gimoo.net/t/1812/+src,
cache:false,
dataType: 'json',
data: {'src':src,"uid": uid,'shipping_id':shipping_id,'order_amount':order_amount,'amount':amount,'postscript':postscript,'addr_id':addr_id},
async: false,
beforeSend:function()
{ //觸發ajax請求開始時執行
$('#submit_font').text('提交訂單中...');
$('.pay_alipay').attr('onclick','javascript:void();');//改變提交按鈕上的文字并將按鈕設置為不可點擊
}, 
success: function (msg, textStatus) 
{
if(msg.result==1)
{
$.Alert('成功提交訂單', 160);
window.location.href=APP+'?m=Pay&a=index&sid='+ sid + '&fuid='+ fuid + '&parent_order_sn='+msg.parent_order_sn;
}
else
{
$.Alert(msg.msg, 160);
$('#submit_font').text('提交訂單');
$('.pay_alipay').attr('onclick','submitorder();');//改變提交按鈕上的文字并將按鈕設置為可點擊 
}
},
error: function (textStatus) 
{
$.Alert('網絡繁忙,請稍后再試...', 160);
$('#submit_font').text('提交訂單');
$('.pay_alipay').attr('onclick','submitorder();');//改變提交按鈕上的文字并將按鈕設置為可點擊 
},
complete: function(msg, textStatus)
{ 
//ajax請求完成時執行
if(msg.result==1)
{
$('#submit_font').text('提交訂單');
$('.pay_alipay').attr('onclick','javascript:void();');//改變提交按鈕上的文字并將按鈕設置為可以點擊
}
} 
}); 

2、利用jquery ajaxPrefilter中斷請求

1)Prefilters是一個預過濾器,在每個請求之前被發送和$.ajax()處理它們前處理。

options 是請求的選項

originalOptions 值作為提供給Ajax方法未經修改的選項,因此,沒有ajaxSettings設置中的默認值

jqXHR 是請求的jqXHR對象

以上內容的核心思想是維護一個隊列,發送請求時,將請求加入隊列,請求響應后,從隊列中清除,這就保證了在任一時刻只能有一個同樣的請求發送.

局限性:僅僅是前臺防止jQuery的ajax請求。對于非jquery的ajax請求,不起作用。因為使用的是jquery的ajaxPreFilter函數,僅僅對jquery的ajax請求有作用。

2)按鈕每次點擊都會向后端發送請求,下面的demo實現了多次點擊按鈕之后,只保證最后一次點擊的請求能夠成功。

<button id="button1">button1</button>
<button id="button2">button2</button>
<button id="button3">button3</button> 
<script type="text/javascript" src="http://www.gimoo.net/t/1812/jquery.min.js"></script>
<script>
var pendingRequests = {};
jQuery.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
var key = options.url;
console.log(key);
if (!pendingRequests[key]) {
pendingRequests[key] = jqXHR;
}else{
//jqXHR.abort(); //放棄后觸發的提交
pendingRequests[key].abort(); // 放棄先觸發的提交
}
var complete = options.complete;
options.complete = function(jqXHR, textStatus) {
pendingRequests[key] = null;
if (jQuery.isFunction(complete)) {
complete.apply(this, arguments);
}
};
});
< 異步加載應用列表開始 -->
$("#button1").live("click", function() {
$.ajax('config/ajax/appinfoListFetcher.json', {
type:'POST',
data: {param1:1,
param2:2,
},
success: function(res){
//后端數據回寫到頁面中
},
error:function(jqXHR, textStatus, errorThrown){
if(errorThrown != 'abort'){
alert('應用加載失敗!');
}
}
});
< 異步加載應用列表結束 -->
});
</script>

調用abort后jquery會執行error的方法,拋出abort的異常信息。可以使用以下方式區分出該類型的異常。

3)注意事項:對于嵌套的點擊事件的代碼,是不起作用的。

$('.btn-cancel-all').live('click',function()
{
$('.confirm-dialog .confirm').live('click',function()
{
$.ajax({
//這里面的ajax事件是不能起作用的
})
}
}

以上所述是小編給大家介紹的jQuery的 $.ajax防止重復提交的兩種方法(推薦),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對綠夏網網站的支持!



主站蜘蛛池模板: 红灯区免费在线观看| 白鲸 电影| 我的爷爷 电影| 板谷由夏| 捉泥鳅的歌词| 丰满美女| 五的词语| 向东海| 电影《忌讳》完整版 | 诗第十二主要内容| 福利视频观看| 顺风| 电影《七天》| 大班安全活动教案40篇| the girl next door| 大国医 电视剧| 西尔扎提| 女同性恨| 好看电影网站免费看| 美丽女老师| 77316电影| 极品美女在线| 布丽特妮·罗伯森| 南果步| 林冲夜奔| 麻辣烫热量| angels of death| 藏文作文| 张猛龙魏碑字帖大全| 同志父子第二部叫什么| 埃文蕾切尔伍德满天星| 黄色网址在线播放| 《小道童》舞蹈| 二次元美女肚子慢慢变大衣服撑破| 真爱的谎言| 二年级第一单元测试卷数学| 台湾电视台| 忘忧草电影| 夜之女王 电影| 绝对权力全集免费观看| 爆操处女|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103