百戰卓越班學員學習經驗分享:eval() 函數

北京尚學堂|百戰卓越班學員學習經驗分享:eval() 函數

來自尚學堂百戰卓越班學員知乎niruiqi547的學習分享。

eval() 函數可計算某個字符串,並執行其中的的 JavaScript 代碼。

該方法只接受原始字符串作為參數,如果 string 參數不是原始字符串,那麼該方法將不作任何改變地返回。因此請不要為 eval() 函數傳遞 String 對象來作為參數。

如果試圖覆蓋 eval 屬性或把 eval() 方法賦予另一個屬性,並通過該屬性調用它,則 ECMAScript 實現允許拋出一個 EvalError 異常。

如果參數中沒有合法的表達式和語句,則拋出 SyntaxError 異常。

如果非法調用 eval(),則拋出 EvalError 異常。

如果傳遞給 eval() 的 Javascript 代碼生成了一個異常,eval() 將把該異常傳遞給調用者。

ajax訪問原理圖

北京尚學堂|百戰卓越班學員學習經驗分享:eval() 函數

創建ajax引擎對象-->聲明監聽函數(判斷狀態碼和響應狀態碼)-->創建併發送ajax請求-->其他處理

用戶名校驗的思路是什麼?

1、 用戶書寫用戶名信息,在失去焦點時進行用戶校驗

2、 失去焦點發送請求到服務器,服務器根據用戶名信息取數據庫查詢用戶名是否存在

3、 將校驗結果相應給客戶端

4、 在當前頁面,也就是用戶名輸入框後顯示提示語

$.ajax()原理

通過 HTTP 請求加載遠程數據。

jQuery 底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。$.ajax() 返回其創建的 XMLHttpRequest 對象。大多數情況下你無需直接操作該函數,除非你需要操作不常用的選項,以獲得更多的靈活性。

最簡單的情況下,$.ajax()可以不帶任何參數直接使用。

注意,所有的選項都可以通過$.ajaxSetup()函數來全局設置。

回調函數

如果要處理$.ajax()得到的數據,則需要使用回調函數。beforeSend、error、dataFilter、success、complete。

  • beforeSend 在發送請求之前調用,並且傳入一個XMLHttpRequest作為參數。error 在請求出錯時調用。傳入XMLHttpRequest對象,描述錯誤類型的字符串以及一個異常對象(如果有的話)dataFilter 在請求成功之後調用。傳入返回的數據以及"dataType"參數的值。並且必須返回新的數據(可能是處理過的)傳遞給success回調函數。success 當請求之後調用。傳入返回後的數據,以及包含成功代碼的字符串。complete 當請求完成之後調用這個函數,無論成功或失敗。傳入XMLHttpRequest對象,以及一個包含成功或錯誤代碼的字符串。

數據類型

$.ajax()函數依賴服務器提供的信息來處理返回的數據。如果服務器報告說返回的數據是XML,那麼返回的結果就可以用普通的XML方法或者jQuery的選擇器來遍歷。如果見得到其他類型,比如HTML,則數據就以文本形式來對待。

通過dataType選項還可以指定其他不同數據處理方式。除了單純的XML,還可以指定 html、json、jsonp、script或者text。

其中,text和xml類型返回的數據不會經過處理。數據僅僅簡單的將XMLHttpRequest的responseText或responseHTML屬性傳遞給success回調函數,

'''注意''',我們必須確保網頁服務器報告的MIME類型與我們選擇的dataType所匹配。比如說,XML的話,服務器端就必須聲明 text/xml 或者 application/xml 來獲得一致的結果。

如果指定為html類型,任何內嵌的JavaScript都會在HTML作為一個字符串返回之前執行。類似的,指定script類型的話,也會先執行服務器端生成JavaScript,然後再把腳本作為一個文本數據返回。

如果指定為json類型,則會把獲取到的數據作為一個JavaScript對象來解析,並且把構建好的對象作為結果返回。為了實現這個目的,他首先嚐試使用JSON.parse()。如果瀏覽器不支持,則使用一個函數來構建。JSON數據是一種能很方便通過JavaScript解析的結構化數據。如果獲取的數據文件存放在遠程服務器上(域名不同,也就是跨域獲取數據),則需要使用jsonp類型。使用這種類型的話,會創建一個查詢字符串參數 callback=? ,這個參數會加在請求的URL後面。服務器端應當在JSON數據前加上回調函數名,以便完成一個有效的JSONP請求。如果要指定回調函數的參數名來取代默認的callback,可以通過設置$.ajax()的jsonp參數。

注意,JSONP是JSON格式的擴展。他要求一些服務器端的代碼來檢測並處理查詢字符串參數。更多信息可以參閱 最初的文章。

如果指定了script或者jsonp類型,那麼當從服務器接收到數據時,實際上是用了


分享到:


相關文章: