Ajax的錯誤除錯
Ajax專案中,遇到ajax非同步獲取資料出錯的時候,我們可以通過捕捉error事件來獲取出錯的資訊,可能是404資源不存在,也可能是跨域請求,也可能是程式碼格式錯誤等等。
$(function(){ $.ajax({ type: "get", url: "./zwfw/bsjggg/bjgg.json", async:false, dataType: "json", success: function (data) { $.each(data.appoint,function(i, item) { if(i==0){ $("#bjgg1 table").append("<tbody></tbody>"); } if(i>11){ return; } var sqrmc = item.sqrmc; if(item.sqrmc !=""&&null!=item.sqrmc ){ if(item.sqrmc.length > 9){ sqrmc =item.sqrmc.substring(0,8)+"..."; } } var sbxmmc = item.sbxmmc; if(item.sbxmmc!=""&&null!=item.sbxmmc){ if(item.sbxmmc.length > 13){ sbxmmc=item.sbxmmc.substring(0,12)+"..."; } } var sbzt = ""; if(item.sbzt!=""&&null!=item.sbzt){ switch(item.sbzt){ case "0": sbzt = "暫存"; break; case "1": sbzt = "正在申請"; break; case "2": sbzt = "正在申請"; break; case "3": sbzt = "已退回"; break; case "4": sbzt = "需補交材料"; break; case "5": sbzt = "掛起告知"; break; case "6": sbzt = "需補交登記"; break; case "8": sbzt = "辦結告知"; break; case "9": sbzt = "已辦結"; break; default: "正在申請"; } } $("#bjgg1 table tbody").append("<tr>"+ "<td width='30%'>"+sqrmc+"</td>"+ "<td width='50%'>"+sbxmmc+"</td>"+ "<td width='20%'>"+sbzt+"</td>"+ "</tr>"); }); }, error:function(XMLHttpRequest, textStatus, errorThrown){ alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } });
當通過ajax非同步呼叫成功時,會呼叫 success函式 。success函式語法為:
//請求成功後回撥函式。這個方法有兩個引數:伺服器返回資料,返回狀態
function (data, textStatus){
// data could be xmlDoc, jsonObj, html, text, etc...
this;
// the options for this ajax request
}
當通過ajax非同步調用出錯時,會呼叫 error函式 。error函式語法為:
//(默 認: 自動判斷 (xml 或 html)) 請求失敗時呼叫時間。
//引數有以下三個:XMLHttpRequest 物件、錯誤資訊、(可選)捕獲的錯誤物件。
//如果發生了錯誤,錯誤資訊(第二個引數)除了得到null之外,
//還可能是"timeout", "error", "notmodified" 和 "parsererror"。
//textStatus: "timeout", "error", "notmodified" 和 "parsererror"。
error:function (XMLHttpRequest, textStatus, errorThrown){
}
error事件返回的第一個引數XMLHttpRequest:
XMLHttpRequest.readyState: 狀態碼的意思
0 - (未初始化)還沒有呼叫send()方法
1 - (載入)已呼叫send()方法,正在傳送請求
2 - (載入完成)send()方法執行完成,已經接收到全部響應內容
3 - (互動)正在解析響應內容
4 - (完成)響應內容解析完成,可以在客戶端呼叫了
傳送error可能有下面兩張引起的,或者其他程式問題,需要我們認真仔細。
1、data:"{}", data為空也一定要傳"{}";不然返回的是xml格式的。並提示parsererror.
2、parsererror的異常和Header 型別也有關係。及編碼header('Content-type: text/html; charset=utf8');