15.PHP_PHP与Ajax
PHP與Ajax
? ? 剛剛下班回來地鐵上看的這一章,覺得這東西思路可以。確實解決了WEB的兩個大的問題,流量和計算量問題。簡單說下我的理解,然后在根據資料整理下學習筆記。
兩個問題:
1.展示一個WEB網頁,上面已經加載好了10張高清圖片,然后有一個輸入框,輸入1,然后在輸入框上面顯示233。如果啥都不想的話,可以這樣,通過表單把數據傳到后臺,然后后臺接到1之后返回233,并且通過刷新頁面來顯示。其實變化也就只有那么一點。浪費流量,尤其是在手機上做這件事。
2.有一個地方,需要輸入一些數據,然后計算一個結果。當然整個計算過程不一定需要后臺數據支持,或者是需要從后臺請求一兩條信息得到計算數據用的參數,最笨的方式就是直接把數據提交到后臺,再后臺計算完成之后再返回來。重新刷新展示。浪費流量,浪費服務器資源。
???So,Ajax上場了,解決問題:
1.加載好的網頁不用動(尤其是原來的那10張高清圖片),然后通過js后臺請求交互,把1發過去,得到233后在本地通過一些姿勢(下面說),局部進行更新。
2.第二種感覺可以采取的姿勢是,直接js從后臺得到想要的數據,然后通過這個數據結合其他公式或者數據在本地計算結果,然后局部刷新展示出來,節省流量和服務器的運算資源。
OK下面我整理下知識點:
Ajax(Asynchronous?JavaScript?And?XML)
Ajax并不是一門新的語言或者技術,它是JavaScript、XML、CSS、DOM等多種已有技術的組合,它可以實現客戶端的一部請求操作,這樣可以實現在不需要刷新頁面的情況下與服務器進行通訊,從而減少了用戶的等待時間。
Ajax開發模式
? ? 對于每個用戶的行為,在傳統Web應用模式中,將生成一次HTTP請求,而在Ajax應用開發模式中通過JavaScript實現在不刷新整個頁面的情況下,對部分數據進行更新,從而減低了網絡流量,帶來了好的用戶體驗。
Ajax的優點,資料上總結了:
使用Ajax
1.XMLHttpRequest
????Ajax的核心,是一個有應用程序接口的JavaScript對象,能過使用HTTP鏈接服務器,通過XMLHttpRequest對象,Ajax可以像桌面應用程序一樣只同服務器進行數據層面的交換,而不用每次都刷新頁面,也不用每次都講數據處理的工作給服務器來做,這樣既減輕了服務器負擔有加快了相應速度,用戶感覺相應賊快。
?
還有就是關于初始化,因為XMLHttpRequest不是一個W3C標準,所以不同瀏覽器初始化姿勢不同:
if(window.XMLHttpRequest){ //Mozilla、Safari等瀏覽器http_request = new XMLHttpRequest(); }else if(window.ActiveXObject){ //IEtry{http_request = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){http_request = new ActiveXObject("Microsoft.XMLHTTP") } }XMLHttpRequest對象常用方法,資料上給了五個:
XMLHttpRequest對象常用屬性:
然后還要了解一下XML,DOM,CSS,直接截圖概念:
Ajax開發需要注意的問題
1.瀏覽器兼容性問題,上面說了。
2.XMLHttpRequest對象封裝,Ajax技術實現主要依賴于XMLHttpRequest對象,但在調用其進行異步數據傳輸的時,由于XMLHttpRequest對象的實力在處理時間完成后就會被銷毀,所以如果不對該對象進行封裝處理,在下次需要調用時需要重建,而且每次都要寫一大段代碼,不方便。目前很多開源Ajax框架都提供了對XMLHttpRequest對象的封裝方案。
3.性能問題Js和Dom都比較慢,用的時候考慮性能優化
4.?中文編碼問題:
PHP發送中文,Ajax接收
Header(‘Content-type:text/html;charset=GB2312’);//指定發送數據的編碼格式
Ajax發送中文,PHP接收
在Ajax中先用encodeURLComponent對要提交的中文進行編碼。再在PHP頁添加如下代碼:
$GB2312string=iconv(‘UTF-8’,’gb2312//IGNORE’,$RequestAjaxString);
PHP選擇MySQL數據庫是,使用如下語句設置數據庫的編碼類型:
Mysql_query(‘set?names?gb2312’);
OK,概念相關就這些,明天再單獨寫兩個PHP-Ajax例子,來熟悉掌握Ajax。這東西很方便也很簡單。
總結
以上是生活随笔為你收集整理的15.PHP_PHP与Ajax的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 14.PHP_PHP与XML技术
- 下一篇: 16.PHP_Ajax模拟服务器登录验证