$.ajax防止多次點擊重復提交的方法


第一種:使用$.ajaxPrefilter( [dataTypes], handler(options, originalOptions, jqXHR) ) 方法:
$.ajaxPrefilter()方法 :是對全局所有的ajax請求有效,在所有的ajax請求之前,會對每一個請求統一做一些處理,可以去設置ajax的選項,也可以對現有的ajax選項進行更改;

接收兩個參數:

dataTypes :可選參數,一個可選的字符串,其中包含一個或多個空格分隔的數據類型;

handler(options, originalOptions, jqXHR):一個函數,接收三個參數。

各個參數的含義:

options : 是請求的選項,包括accepts、crossDomain、contentType、url、async、type、headers、error、dataType等許多參數選項

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

jqXHR :就是經過jQuery封裝的XMLHttpRequest對象(保留了其本身的屬性和方法)

代碼如下:

$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
  if ( options.abortOnRetry ) {
    if ( currentRequests[ options.url ] ) {
      currentRequests[ options.url ].abort();
    }
    currentRequests[ options.url ] = jqXHR;
  }
});

 

第二種:使用beforeSend選項,在發送請求前將提交按鈕變為不可用的狀態;

上面的第一種方法是針對所有的ajax請求,而這一種針對的是單個的請求;

在點擊過一次提交后,在提交完成前都將提交按鈕不可用,這樣就避免掉了重復點擊的問題

$.ajax({
    url:'testurl',
    beforeSend:function(){
        $('.submit').attr('onclick','javascript:void();');
    },
    success:function(data){
        $('.submit').removeAttr('onclick')
    },
    error:function(){
        $('.submit').removeAttr('onclick')
    }
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM