error使用情況:1、當後台傳回的dataType類型和前台寫的不一致時使用;2、當async請求同步非同步問題時使用;3、當data設定為空時使用;4、當傳遞的參數不是ajax支援的編碼格式時使用。
本文操作環境:windows7系統、javascript1.8.5&&html5版、Dell G3電腦。
ajax中error在什麼時候使用
#dataType錯誤(dataType用來指定後台回傳參數的類型)
類型錯誤:後台傳回的dataType類型和前台寫的不一致會跳入error。
格式錯誤:jquery1.4之後對json的格式要求非常嚴格,json格式錯誤也會跳入error.{“test”:1} 注意格式
有時,在不需要傳回值的情況下,丟按範本格式,設定了dataType:”json”,參數;這時候,ajax傳值正確時,出現200回傳成功狀態下報錯的特殊情況。
如果沒有指定,jQuery 會自動根據 HTTP 套件 MIME 資訊來智慧判斷,例如 XML MIME 類型就被辨識為 XML。在 1.4 中,JSON 就會產生一個 JavaScript 對象,而 script 則會執行這個腳本。隨後伺服器端傳回的資料會根據這個值解析後,傳遞給回呼函數。可用值:
「xml」: 傳回 XML 文檔,可用 jQuery 處理。
「html」: 傳回純文字 HTML 資訊;包含的 script 標籤會在插入 dom 時執行。
「script」: 傳回純文字 JavaScript 程式碼。不會自動快取結果。除非設定了 “cache” 參數。注意:在遠端請求時(不在同一個網域下),所有 POST 請求都會轉為 GET 請求。 (因為將使用 DOM 的 script標籤來載入)
“json”: 返回 JSON 資料 。
“jsonp”: JSONP 格式。使用 JSONP 形式呼叫函數時,如 “myurl?callback=?” jQuery 將自動取代 ? 為正確的函式名,以執行回呼函數。
“text”: 傳回純文字字串
async請求同步非同步問題
async預設是true(非同步請求),如果想一個Ajax執行完後再執行另一個Ajax, 需要把async=false
例如,你用post請求傳值到另一個頁面後台,但是頁面一載入你的ajax就已經執行過了,傳值接收是在後台才完成的,這時候就請求不到數據,所以可以考慮把ajax請求改為同步試試。
data不能不寫
data為空也一定要傳」{}」;不然回傳的是xml格式的。並提示parsererror. data:”{}”
parsererror的異常和Header 類型也有關係。及編碼header('Content-type: text/html; charset=utf8');
#傳遞的參數
必須是ajax支援的編碼格式
URL路徑問題
路徑不能有中文
一般我們可以透過分析error中的一些參數來進行錯誤原因的判斷:
XMLHttpRequest.readyState: 狀態碼
0 - (未初始化)還沒有呼叫send()方法
1 - (載入)已呼叫send()方法,正在傳送請求
2 -(載入完成)send()方法執行完成,並且已經接收到全部回應內容
#3 -(互動)正在解析回應內容
##4 -(完成)回應內容解析完成,可以在客戶端呼叫了XMLHttpRequest.status:呼叫 http請求狀態請求狀態很多,具體遇到錯誤狀態代碼可以自行百度查詢。 XMLHttpRequest.responseText:傳回的錯誤訊息如果發生了錯誤,錯誤訊息(第二個參數)除了得到null之外,還可能是」timeout”, “error”, “notmodified” 和“parsererror”。 【相關教學推薦:AJAX影片教學】
以上是ajax中error什麼時候使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!