python ajax mysql_Python开发【第十六篇】:AJAX全套
概述
對于WEB應用程序:用戶瀏覽器發送請求,服務器接收并處理請求,然后返回結果,往往返回就是字符串(HTML),瀏覽器將字符串(HTML)渲染并顯示瀏覽器上。
1、傳統的Web應用
一個簡單操作需要重新加載全局數據
2、AJAX
AJAX,Asynchronous JavaScript and XML (異步的JavaScript和XML),一種創建交互式網頁應用的網頁開發技術方案。
異步的JavaScript:
使用 【JavaScript語言】 以及 相關【瀏覽器提供類庫】 的功能向服務端發送請求,當服務端處理完請求之后,【自動執行某個JavaScript的回調函數】。
PS:以上請求和響應的整個過程是【偷偷】進行的,頁面上無任何感知。
XML
XML是一種標記語言,是Ajax在和后臺交互時傳輸數據的格式之一
利用AJAX可以做:
1、注冊時,輸入用戶名自動檢測用戶是否已經存在。
2、登陸時,提示用戶名密碼錯誤
3、刪除數據行時,將行ID發送到后臺,后臺在數據庫中刪除,數據庫刪除成功后,在頁面DOM中將數據行也刪除。(博客園)
“偽”AJAX
由于HTML標簽的iframe標簽具有局部加載內容的特性,所以可以使用其來偽造Ajax請求。
原生AJAX
Ajax主要就是使用 【XmlHttpRequest】對象來完成請求的操作,該對象在主流瀏覽器中均存在(除早起的IE),Ajax首次出現IE5.5中存在(ActiveX控件)。
1、XmlHttpRequest對象介紹
XmlHttpRequest對象的主要方法:
XmlHttpRequest對象的主要屬性:
2、跨瀏覽器支持
XmlHttpRequest
IE7+, Firefox, Chrome, Opera, etc.
ActiveXObject("Microsoft.XMLHTTP")
IE6, IE5
?基于原生AJAX - Demo
jQuery Ajax
jQuery其實就是一個JavaScript的類庫,其將復雜的功能做了上層封裝,使得開發者可以在其基礎上寫更少的代碼實現更多的功能。
jQuery 不是生產者,而是大自然搬運工。
jQuery Ajax本質 XMLHttpRequest 或 ActiveXObject
注:2.+版本不再支持IE9以下的瀏覽器
?jQuery Ajax 方法列表
?基于jQueryAjax - Demo
跨域AJAX
由于瀏覽器存在同源策略機制,同源策略阻止從一個源加載的文檔或腳本獲取或設置另一個源加載的文檔的屬性。
特別的:由于同源策略是瀏覽器的限制,所以請求的發送和響應是可以進行,只不過瀏覽器不接受罷了。
瀏覽器同源策略并不是對所有的請求均制約:
制約:?XmlHttpRequest
不叼:?img、iframe、script等具有src屬性的標簽
跨域,跨域名訪問,如:http://www.c1.com 域名向 http://www.c2.com域名發送請求。
1、JSONP實現跨域請求
JSONP(JSONP - JSON with Padding是JSON的一種“使用模式”),利用script標簽的src屬性(瀏覽器允許script標簽跨域)
?基于JSONP實現跨域Ajax - Demo
2、CORS
隨著技術的發展,現在的瀏覽器可以支持主動設置從而允許跨域請求,即:跨域資源共享(CORS,Cross-Origin Resource Sharing),其本質是設置響應頭,使得瀏覽器允許跨域請求。
* 簡單請求 OR 非簡單請求
* 簡單請求和非簡單請求的區別?
* 關于“預檢”
基于cors實現AJAX請求:
a、支持跨域,簡單請求
服務器設置響應頭:Access-Control-Allow-Origin = '域名' 或 '*'
?HTML
?Torando
b、支持跨域,復雜請求
由于復雜請求時,首先會發送“預檢”請求,如果“預檢”成功,則發送真實數據。
“預檢”請求時,允許請求方式則需服務器設置響應頭:Access-Control-Request-Method
“預檢”請求時,允許請求頭則需服務器設置響應頭:Access-Control-Request-Headers
“預檢”緩存時間,服務器設置響應頭:Access-Control-Max-Age
?HTML
?Tornado
c、跨域獲取響應頭
默認獲取到的所有響應頭只有基本信息,如果想要獲取自定義的響應頭,則需要再服務器端設置Access-Control-Expose-Headers。
?HTML
?Tornado
d、跨域傳輸cookie
在跨域請求中,默認情況下,HTTP Authentication信息,Cookie頭以及用戶的SSL證書無論在預檢請求中或是在實際請求都是不會被發送。
如果想要發送:
瀏覽器端:XMLHttpRequest的withCredentials為true
服務器端:Access-Control-Allow-Credentials為true
注意:服務器端響應的?Access-Control-Allow-Origin 不能是通配符 *
?HTML
?Tornado
總結
以上是生活随笔為你收集整理的python ajax mysql_Python开发【第十六篇】:AJAX全套的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php mysql设计中常问_PHP开发
- 下一篇: java excel导入去重_如何把日志