日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php ajax jquery 表单重复提交,jQuery的 $.ajax防止重复提交的两种方法(推荐)

發布時間:2024/10/8 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php ajax jquery 表单重复提交,jQuery的 $.ajax防止重复提交的两种方法(推荐) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

可以采用如下方法:

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

$.ajax(

{

type: 'POST',

url: APP+'?m=Shopping&a=ajaxSubmitorder&sid='+sid+'&src='+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實現了多次點擊按鈕之后,只保證最后一次點擊的請求能夠成功。

button1

button2

button3

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('應用加載失敗!');

}

}

});

});

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

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

$('.btn-cancel-all').live('click',function()

{

$('.confirm-dialog .confirm').live('click',function()

{

$.ajax({

//這里面的ajax事件是不能起作用的

})

}

}

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

總結

以上是生活随笔為你收集整理的php ajax jquery 表单重复提交,jQuery的 $.ajax防止重复提交的两种方法(推荐)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。