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