error使用情況:1、當(dāng)后臺(tái)返回的dataType類(lèi)型和前臺(tái)寫(xiě)的不一致時(shí)使用;2、當(dāng)async請(qǐng)求同步異步問(wèn)題時(shí)使用;3、當(dāng)data設(shè)置為空時(shí)使用;4、當(dāng)傳遞的參數(shù)不是ajax支持的編碼格式時(shí)使用。
本教程操作環(huán)境:windows10系統(tǒng)、jquery3.2.1版本、Dell G3電腦。
ajax中error在什么時(shí)候使用
-
dataType錯(cuò)誤(dataType用來(lái)指定后臺(tái)返回參數(shù)的類(lèi)型)
類(lèi)型錯(cuò)誤:后臺(tái)返回的dataType類(lèi)型和前臺(tái)寫(xiě)的不一致會(huì)跳入error。
格式錯(cuò)誤:jquery1.4之后對(duì)json的格式要求非常嚴(yán)格,json格式錯(cuò)誤也會(huì)跳入error.{“test”:1} 注意格式
有時(shí),在不需要返回值的情況下,扔按模板格式,設(shè)置了dataType:”json”,參數(shù);這時(shí)候,ajax傳值正確時(shí),出現(xiàn)200返回成功狀態(tài)下報(bào)錯(cuò)的特殊情況。
如果不指定,jQuery 將自動(dòng)根據(jù) HTTP 包 MIME 信息來(lái)智能判斷,比如 XML MIME 類(lèi)型就被識(shí)別為 XML。在 1.4 中,JSON 就會(huì)生成一個(gè) JavaScript 對(duì)象,而 script 則會(huì)執(zhí)行這個(gè)腳本。隨后服務(wù)器端返回的數(shù)據(jù)會(huì)根據(jù)這個(gè)值解析后,傳遞給回調(diào)函數(shù)??捎弥?
“xml”: 返回 XML 文檔,可用 jQuery 處理。
“html”: 返回純文本 HTML 信息;包含的 script 標(biāo)簽會(huì)在插入 dom 時(shí)執(zhí)行。
“script”: 返回純文本 JavaScript 代碼。不會(huì)自動(dòng)緩存結(jié)果。除非設(shè)置了 “cache” 參數(shù)。注意:在遠(yuǎn)程請(qǐng)求時(shí)(不在同一個(gè)域下),所有 POST 請(qǐng)求都將轉(zhuǎn)為 GET 請(qǐng)求。(因?yàn)閷⑹褂?DOM 的 script標(biāo)簽來(lái)加載)
“json”: 返回 JSON 數(shù)據(jù) 。
“jsonp”: JSONP 格式。使用 JSONP 形式調(diào)用函數(shù)時(shí),如 “myurl?callback=?” jQuery 將自動(dòng)替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。
“text”: 返回純文本字符串
-
async請(qǐng)求同步異步問(wèn)題
async默認(rèn)是true(異步請(qǐng)求),如果想一個(gè)Ajax執(zhí)行完后再執(zhí)行另一個(gè)Ajax, 需要把a(bǔ)sync=false
例如,你用post請(qǐng)求傳值到另一個(gè)頁(yè)面后臺(tái),但是頁(yè)面一加載你的ajax就已經(jīng)執(zhí)行過(guò)了,傳值接收是在后臺(tái)才完成的,這時(shí)候就請(qǐng)求不到數(shù)據(jù),所以可以考慮把a(bǔ)jax請(qǐng)求改為同步試試。
-
data不能不寫(xiě)
data為空也一定要傳”{}”;不然返回的是xml格式的。并提示parsererror. data:”{}”
parsererror的異常和Header 類(lèi)型也有關(guān)系。及編碼header(‘Content-type: text/html; charset=utf8’);
-
傳遞的參數(shù)
必須是ajax支持的編碼格式
-
URL路徑問(wèn)題
路徑不能有中文
一般我們可以通過(guò)分析error中的一些參數(shù)進(jìn)行錯(cuò)誤原因的判斷:
XMLHttpRequest.readyState: 狀態(tài)碼
0 - (未初始化)還沒(méi)有調(diào)用send()方法
1 - (載入)已調(diào)用send()方法,正在發(fā)送請(qǐng)求
2 - (載入完成)send()方法執(zhí)行完成,已經(jīng)接收到全部響應(yīng)內(nèi)容
3 - (交互)正在解析響應(yīng)內(nèi)容
4 - (完成)響應(yīng)內(nèi)容解析完成,可以在客戶(hù)端調(diào)用了
XMLHttpRequest.status:調(diào)用http請(qǐng)求狀態(tài)
請(qǐng)求狀態(tài)有很多,具體遇到錯(cuò)誤狀態(tài)代碼可以自行百度查詢(xún)。
XMLHttpRequest.responseText:返回的錯(cuò)誤信息
如果發(fā)生了錯(cuò)誤,錯(cuò)誤信息(第二個(gè)參數(shù))除了得到null之外,還可能是”timeout”, “error”, “notmodified” 和 “parsererror”。
【相關(guān)教程推薦:AJAX視頻教程】