web前端學(xué)習(xí)路線分享了解AJAX是什么首先是服務(wù)器 什么是服務(wù)器:咱們的頁面來源于服務(wù)器;實例(在phpnwo上面存放一個頁面), 咱們把頁面放在互聯(lián)網(wǎng)的服務(wù)器上,就有了自己的網(wǎng)站了。 1.異步同步 生活中的同步: 生活中的異步: 在JavaScript語言中,同步和異步的概念剛好相反。 這JavaScript中同步就是:你不執(zhí)行完上面的代碼,那么下面的代碼你就別執(zhí)行;一步一步執(zhí)行,這就是同步。 異步就是可以一塊執(zhí)行的代碼; 進程的概念 進程≠程序 程序從開始到結(jié)束的一次執(zhí)行過程叫做進程 一個進程當(dāng)中,程序同時運行的多個分支,叫做線程 多線程異步執(zhí)行,可以提高程序的效率 AJAX的重要性 在許多數(shù)企業(yè)看來AJAX的使用熟練程度 === 你的工作經(jīng)驗。 2.什么是AJAX ajax是前后端數(shù)據(jù)交互的重要手段 Ajax 全稱為:“Asynchronous JavaScript and XML”(異步 JavaScript 和 XML), 它并不是 JavaScript 的一種單一技術(shù),而是利用了一系列交互式網(wǎng)頁應(yīng)用相關(guān)的技術(shù)所形 成的結(jié)合體。使用 Ajax,我們可以無刷新狀態(tài)更新頁面,并且實現(xiàn)異步提交,提升了用戶體驗。 一.Ajax 概述 Ajax 這個概念是由 JesseJamesGarrett 在 2005 年發(fā)明的。它本身不是單一技術(shù),是一串 技術(shù)的集合,主要有: 1.JavaScript,通過用戶或其他與瀏覽器相關(guān)事件捕獲交互行為 2.XMLHttpRequest 對象,通過這個對象可以在不中斷其它瀏覽器任務(wù)的情況下向服務(wù) 器發(fā)送請求; 3.服務(wù)器上的文件,以 XML、HTML 或 JSON 格式保存文本數(shù)據(jù); 4.其它 JavaScript,解釋來自服務(wù)器的數(shù)據(jù)(比如 PHP 從 MySQL 獲取的數(shù)據(jù))并將其 呈現(xiàn)到頁面上。 由于 Ajax 包含眾多特性,優(yōu)勢與不足也非常明顯。優(yōu)勢主要以下幾點: 1.不需要插件支持(一般瀏覽器且默認(rèn)開啟 JavaScript 即可); 2.用戶體驗極佳(不刷新頁面即可獲取可更新的數(shù)據(jù)); 3.提升 Web 程序的性能(在傳遞數(shù)據(jù)方面做到按需放松,不必整體提交); 4.減輕服務(wù)器和帶寬的負擔(dān)(將服務(wù)器的一些操作轉(zhuǎn)移到客戶端); 而 Ajax 的不足由以下幾點: 1.不同版本的瀏覽器度 XMLHttpRequest 對象支持度不足(比如 IE5 之前); 2.前進、后退的功能被破壞(因為 Ajax 永遠在當(dāng)前頁,不會幾率前后頁面); 3.搜索引擎的支持度不夠(因為搜索引擎爬蟲還不能理解 JS 引起變化數(shù)據(jù)的內(nèi)容); 4.開發(fā)調(diào)試工具缺乏(相對于其他語言的工具集來說,JS 或 Ajax 調(diào)試開發(fā)少的可憐) 。 3.AJAX的使用 電話的接打順序: 1.首先要有一個電話; 2.撥號; 3.說話; 4.聽電話另一邊的信息; //有一個電話:創(chuàng)建請求對象; 1.var AJAX=new XMLHttpRequest( ); //撥號:設(shè)置請求參數(shù); 2.AJAX.open('get','data/test.json',true); 第一個參數(shù):POST||GET POST和GET的區(qū)別 POST是發(fā)送數(shù)據(jù),GET是接受數(shù)據(jù); PSOT發(fā)送數(shù)據(jù)的安全性較好,而GET較差; POST發(fā)送數(shù)據(jù)不限制大小,而GET大小受限2~100k。 什么時候用GET和POST那:在數(shù)據(jù)獲取時用GET方式,在操作數(shù)據(jù)時應(yīng)使用POST方式。 第三個參數(shù):當(dāng)該boolean值為true時,服務(wù)器請求是異步進行的,也就是腳本執(zhí)行send()方法后不等待 服務(wù)器的執(zhí)行結(jié)果,而是繼續(xù)執(zhí)行腳本代碼; 當(dāng)該boolean值為false時,服務(wù)器請求是同步進行的,也就是腳本執(zhí)行send()方法后等待 服務(wù)器的執(zhí)行結(jié)果的返回,若在等待過程中超時,則不再等待,繼續(xù)執(zhí)行后面的腳本代碼! 3. ajax.onreadystatechange = function() { if (ajax.readyState == 4 && ajax.status == 200) { func_succ(ajax.responseText); } else { //alert("ajax faild readyState:"+ajax.readyState+" status:"+ajax.status); } }; 4.ajax.send(null); ajax.readyStatus 0 - (未初始化)還沒有調(diào)用send()方法 1 - (載入)已調(diào)用send()方法,正在發(fā)送請求 2 - (載入完成)send()方法執(zhí)行完成,已經(jīng)接收到全部響應(yīng)內(nèi)容 3 - (交互)正在解析響應(yīng)內(nèi)容 4 - (完成)響應(yīng)內(nèi)容解析完成,可以在客戶端調(diào)用了 |
|