Jquery作為前端開發(fā)的一個(gè)非常重要的框架,其中的Ajax使用頻率也特別高。其中,jquery的ajax()方法提供了很多的參數(shù)可以進(jìn)行配置,其中之一是timeout,表示超時(shí)時(shí)間。超時(shí)時(shí)間到達(dá)后,我們通常會(huì)希望中斷這個(gè)請(qǐng)求,這個(gè)時(shí)候就需要使用jquery ajax的abort()方法。
abort()方法可以中斷一個(gè)正在進(jìn)行的ajax請(qǐng)求。當(dāng)超時(shí)時(shí)間到達(dá)后,我們可以在超時(shí)函數(shù)中調(diào)用abort()方法來(lái)中斷當(dāng)前請(qǐng)求。下面是一個(gè)超時(shí)abort的示例代碼:
var request = $.ajax({ url: "example.php", type: "POST", data: {id : menuId}, timeout: 5000 }); request.done(function(msg) { $("#log").html( msg ); }); request.fail(function(jqXHR, textStatus) { if(textStatus==="timeout") { request.abort(); $("#log").html("請(qǐng)求超時(shí),請(qǐng)稍后再試!"); } });
在上面的代碼中,我們?cè)O(shè)置了請(qǐng)求超時(shí)時(shí)間為5000毫秒。當(dāng)請(qǐng)求失敗時(shí),判斷textStatus是否為timeout,如果是則調(diào)用abort()方法中斷當(dāng)前的請(qǐng)求,并輸出相應(yīng)的提示信息。
需要注意的是,調(diào)用abort()方法并不會(huì)更改當(dāng)前請(qǐng)求的狀態(tài),仍然是status=0(未初始化),所以在判斷請(qǐng)求狀態(tài)時(shí)需要進(jìn)行判斷。
總結(jié):jquery ajax的abort()方法非常實(shí)用,可以中斷正在進(jìn)行的請(qǐng)求,幫助我們更好地操控頁(yè)面的異步請(qǐng)求。