js高級程序設計 筆記 --- 錯誤處理、json和ajax
1,錯誤處理
1,try-catch語句
try{可能導致錯誤的代碼} catch(error) {在錯誤發生時該怎麽處理}
error.message是所有瀏覽器都支持的屬性。
finally語句是不論代碼如何都會執行的。
2,錯誤類型
Error是基類型,其他錯誤都繼承自該類型。
EvalError:使用eval函數發生異常時被拋出
RangeError: 數值超出相應範圍時觸發。
ReferenceError: 找不到對象,變量不存在
SyntaxError: 語法錯誤
TypeError:類型錯誤。 變量中保存意外的類型,或者訪問不存在的方法
拋出錯誤:
throw操作符。用於拋出自定義錯誤。
錯誤事件
3,處理錯誤的策略
1,常見的錯誤類型
類型轉換錯誤、數據類型錯誤、通信錯誤
4,區分致命錯誤和非致命錯誤
5,把錯誤記錄到服務器
2,JSON
json是一種數據格式。
1,語法
json的語法可以表示以下三種類型的值
簡單值: 使用與js相同的語法,可以在json中表示字符串,數值,布爾值和null,但json不支持undefined; json的字符串必須要使用雙引號。
對象:對象是一種復雜數據類型。表示的是一組無序的鍵值對,每個鍵值對中的值可以是簡單值,也可以是復雜數據類型的值。與js的對象字面量相比,json有兩個地方不一樣,首先沒有聲明變量,其次,沒用結尾的分號。還有對象的屬性必須加雙引號。
數組:數組也是一種復雜數據類型。表示一組有序的值的列表。可以通過索引來訪問,數組的值也可以是任意類型。
2,解析與序列化
全局JSON對象有兩個方法:
parse() : 將json轉為js對象。 也可以接收另一個參數,該參數為一個函數。將在每個鍵值對上調用。
stringify() : 將js對象序列化為JSON對象 ; 除了要接收需要序列化的js對象外,還可以接收兩個參數: 第二個參數 如果是一個數組,那麽結果中將只會包含數組中列出的屬性。如果是一個函數,鍵名和屬性值。根據鍵名來處理屬性值。如果函數返回的是undefined,那麽相應的屬性會被忽略。 第三個參數用於控制結果中的縮進和空白符。
可以為任何對象添加toJSON()方法,那麽將會返回對應的值
序列化對象的順序如下:
1,如果存在toJSON()方法而且能通過它取得有效的值,則調用該方法,否則返回對象本身
2,如果提供了第二個參數,則應用這個過濾器,傳入函數過濾器的值是第一步返回的值
3,對第二步返回的每個值進行相應的序列化。
4,如果提供了第三個參數,執行相應的格式化。
小結: JSON是一個輕量級的數據格式。js使用js語法的子集表示對象、數組、字符串、數值、布爾值和null。 es5定義了一個原生的json對象,可以用來將js對象轉化為JSON字符串或者將JSON解析為js對象。 JSON.stringify和JSON.parse也可以接受一些選項,通過他們改變過濾方式。
3,ajax
頁面的局部刷新技術。
1,XMLHttpRequest對象
new XMLHttpRequest()
使用XHR對象的時候,要調用的第一個方法時open(),它接受3個參數,要發送請求的類型(get,post等),請求的URL和表示是否異步發送的布爾值。
要發送特定的請求,必須調用send()方法; send方法接收一個參數,即作為請求主體發送的數據。如果不需要,則必須傳入null。調用send後,請求就會被分派到服務器。
在收到相應後,響應的數據會自動填充XHR的屬性。相關的屬性有以下:
responseText:作為響應主體被返回的文本
responseXML:如果響應的類型為text/xml或application/xml,這個屬性將保存著響應數據的XML DOM文檔。
status: 響應的HTTP狀態。
statusText:HTTP狀態的說明
在接收到響應後,第一步是檢查status屬性。以確定響應成功返回。狀態代碼為200 或者為304時,可以意味著響應為有效的。
XHR對象的readyState屬性表示請求/響應過程的當前活動階段。有以下取值:
0:未初始化,尚未調用open方法
1:啟動。已經調用open,尚未調用send
2:發送。調用send,未收到響應
3:接收。接收部分響應數據
4:完成。接收到全部數據,可以使用
可以監聽readystatechange事件,在事件內部判斷響應狀態和活動階段。
HTTP頭部信息
每個HTTP請求和響應都會帶有相應的頭部信息。默認的頭部信息如下:
Accept:瀏覽器能處理的內容類型
js高級程序設計 筆記 --- 錯誤處理、json和ajax