AJAX的全稱是Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)。
AJAX不是新的編程語(yǔ)言,而是一種使用現(xiàn)有標(biāo)準(zhǔn)的新方法。ajax是與服務(wù)器交換數(shù)據(jù)并更新部分網(wǎng)頁(yè)的藝術(shù),在不重新加載整個(gè)頁(yè)面的情況下。
ajax是一種在無(wú)需重新加載整個(gè)網(wǎng)頁(yè)的情況下,能夠更新部分網(wǎng)頁(yè)的技術(shù)。
ajax是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)。通過(guò)在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換。ajax可以使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)網(wǎng)頁(yè)的某部分進(jìn)行更新。而傳統(tǒng)的網(wǎng)頁(yè)(不使用ajax)如果需要更新內(nèi)容,必須重載整個(gè)網(wǎng)頁(yè)面。

在Web應(yīng)用開發(fā)過(guò)程中,業(yè)界對(duì)前后端的分界線似乎一直都沒(méi)有確定的概念,不過(guò)大多數(shù)人以瀏覽器作為前后端的分界線。將瀏覽器中為用戶進(jìn)行頁(yè)面展示的部分稱為前端,而將運(yùn)行于服務(wù)器,為前端提供業(yè)務(wù)邏輯和數(shù)據(jù)準(zhǔn)備的所有代碼統(tǒng)稱為后端。

雖然前后端分離在數(shù)年前就已經(jīng)開始受到關(guān)注,但很多人對(duì)它卻是只聞其聲,未見其形,所以對(duì)它產(chǎn)生了一些誤解,誤以為前后段分離只是一種Web應(yīng)用的開發(fā)模式,只要在Web應(yīng)用的開發(fā)期進(jìn)行了前后端開發(fā)工作的分工就是前后端分離。
其實(shí)并非如此,準(zhǔn)確的說(shuō),前后端分離并不只是開發(fā)模式,而是Web應(yīng)用的一種架構(gòu)模式。在開發(fā)期,前后端工程師可以通過(guò)約定好交互接口,實(shí)現(xiàn)并行開發(fā);在運(yùn)行期,前后端分離模式需要對(duì)Web應(yīng)用進(jìn)行分離部署,前后端之間使用HTTP請(qǐng)求進(jìn)行交互。

一、JSON解析
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。JSON采用完全獨(dú)立于語(yǔ)言的文本格式,這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。簡(jiǎn)單地說(shuō),JSON 可以將 JavaScript 對(duì)象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個(gè)字符串,或者在異步應(yīng)用程序中將字符串從 Web 客戶機(jī)傳遞給服務(wù)器端程序。
二、Ajax接口調(diào)用
前后端分離意味著,前后端之間使用 JSON 來(lái)交流,兩個(gè)開發(fā)團(tuán)隊(duì)之間使用 API 作為契約進(jìn)行交互, 通過(guò)JSON字符串,然后在異步應(yīng)用程序中將字符串從 Web 客戶機(jī)傳遞給服務(wù)器端程序。這部分學(xué)習(xí)的就是如何從前臺(tái)向后臺(tái)發(fā)起一個(gè)Ajax請(qǐng)求,最后得到服務(wù)器返回的數(shù)據(jù)響應(yīng)之后,進(jìn)行前端頁(yè)面的更新。
三、php后臺(tái)

PHP是一種流行的通用腳本語(yǔ)言,特別適合于web開發(fā)。php語(yǔ)言具有以下特點(diǎn):
1、跨平臺(tái),性能優(yōu)越,和很多免費(fèi)的平臺(tái)結(jié)合非常省錢,比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)結(jié)合,或者數(shù)據(jù)應(yīng)用夠大可以考慮換 PostgreSQL或者Oracle,支持N種數(shù)據(jù)庫(kù)。(N >= 10)
2、語(yǔ)法簡(jiǎn)單,如果有學(xué)習(xí)C和Perl的很容易上手,并且跟ASP有部分類似。有成熟的開發(fā)工具,比如NuPHPed,或者Zend Studio等等,再Linux平臺(tái)下可以使用Eclipse等等。
3、目前主流技術(shù)都支持,比如WebService、Ajax、XML等等,足夠應(yīng)用。
4、有很多成熟的框架,比如支持MVC的框架:phpMVC,支持類似ASP.net的事件驅(qū)動(dòng)的框架:Prado,支持類似Ruby On Rails的快速開發(fā)的框架:Cake等等,足夠滿足你的應(yīng)用需求。
5、PHP 5已經(jīng)有成熟的面向?qū)ο篌w系,能夠適應(yīng)基本的面向?qū)ο笠?。適合開發(fā)大型項(xiàng)目。
這部分主要學(xué)習(xí)的如何搭建一個(gè)php服務(wù)器,掌握PHP的基本語(yǔ)法,通過(guò)php生成一個(gè)動(dòng)態(tài)網(wǎng)頁(yè),掌握如何使用php完成一個(gè)標(biāo)準(zhǔn)化的接口,最終返回JSON數(shù)據(jù)給前臺(tái)。
四、數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)或多個(gè)不同的API用于創(chuàng)建,訪問(wèn),管理,搜索和復(fù)制 所保存的數(shù)據(jù)。我們也可以將數(shù)據(jù)存儲(chǔ)在文件中,但是在文件中讀寫數(shù)據(jù)速度相對(duì)較慢。
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開發(fā),目前屬于Oracle公司。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在 不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
• Mysql是開源的,所以你不需要支付額外的費(fèi)用。
• Mysql支持大型的數(shù)據(jù)庫(kù)。可以處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)。
• MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語(yǔ)言形式。
• Mysql可以允許于多個(gè)系統(tǒng)上,并且支持多種語(yǔ)言。這些編程語(yǔ)言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
• Mysql對(duì)PHP有很好的支持,PHP是目前最流行的Web開發(fā)語(yǔ)言。
• MySQL支持大型數(shù)據(jù)庫(kù),支持5000萬(wàn)條記錄的數(shù)據(jù)倉(cāng)庫(kù),32位系統(tǒng)表文件最大可支持4GB,64位系統(tǒng)支持最大的表文件為8TB。
這部分主要學(xué)習(xí)的是數(shù)據(jù)中的增刪改查操作,最后通過(guò)php訪問(wèn)數(shù)據(jù)中的數(shù)據(jù),然后通過(guò)響應(yīng)的處理,發(fā)揮給前臺(tái)使用。
五、Ajax跨域
由于在工作中需要使用AJAX請(qǐng)求其他域名下的請(qǐng)求,但是會(huì)出現(xiàn)拒絕訪問(wèn)的情況,這是因?yàn)榛诎踩目紤],AJAX只能訪問(wèn)本地的資源,而不能跨域訪問(wèn)。
解決方式一:
“XHR2” 全稱 “XMLHttpRequest Level2” 是HTML5提供的方法,對(duì)跨域訪問(wèn)提供了很好的支持,并且還有一些新的功能。
* IE10以下的版本都不支持
* 只需要在服務(wù)器端頭部加上下面兩句代碼:
header( "Access-Control-Allow-Origin:*" );
header( "Access-Control-Allow-Methods:POST,GET" );
解決方式二:
JSONP(JSON with Padding)是一個(gè)非官方的協(xié)議,它允許在服務(wù)器端集成Script tags返回至客戶端,通過(guò)javascript callback的形式實(shí)現(xiàn)跨域訪問(wèn)(這僅僅是JSONP簡(jiǎn)單的實(shí)現(xiàn)形式)。
由于同源策略的限制,XmlHttpRequest只允許請(qǐng)求當(dāng)前源(域名、協(xié)議、端口)的資源,為了實(shí)現(xiàn)跨域請(qǐng)求,可以通過(guò)script標(biāo)簽實(shí)現(xiàn)跨域請(qǐng)求,然后在服務(wù)端輸出JSON數(shù)據(jù)并執(zhí)行回調(diào)函數(shù),從而解決了跨域的數(shù)據(jù)請(qǐng)求。
總結(jié)
以上所述是小編給大家介紹的Ajax異步請(qǐng)求技術(shù)實(shí)例講解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- Vue form 表單提交+ajax異步請(qǐng)求+分頁(yè)效果
- ajax異步請(qǐng)求詳解
- AJAX實(shí)現(xiàn)簡(jiǎn)單的注冊(cè)頁(yè)面異步請(qǐng)求實(shí)例代碼
- 基于JQuery的$.ajax方法進(jìn)行異步請(qǐng)求導(dǎo)致頁(yè)面閃爍的解決辦法
- SpringMVC環(huán)境下實(shí)現(xiàn)的Ajax異步請(qǐng)求JSON格式數(shù)據(jù)
- jquery的ajax異步請(qǐng)求接收返回json數(shù)據(jù)實(shí)例
- ajax的工作原理以及異步請(qǐng)求的封裝介紹
- dojo學(xué)習(xí)第二天 ajax異步請(qǐng)求之綁定列表