1. 程式人生 > >第十五天(Ajax)

第十五天(Ajax)

      由於一些原因 昨天不能進部落格了。昨天的東西今天補上,今天的也不能落下。更煩惱的是,今天請假去考駕校筆試,等了一天結果沒有過去,還拉了一天的知識。鬱悶啊。。。

Ajax:採取相同的技術(htmlcssjavascriptxml),使用了新的思路

1、 傳統的web開發模型

使用者首先向web伺服器傳送一個http請求,伺服器獲取請求後,

從後臺資料庫(mysql)、應用程式(*.php)進行查詢,處理結果被生成html頁面,

反饋到客戶端的是完整的頁面;

2、 基於AJAXweb開發模型

   使用者首先向web伺服器傳送一個http請求,伺服器獲取請求後,

從後臺資料庫(mysql)、應用程式(*.php)進行查詢,處理結果被生成xml資料,

反饋到客戶端的是所需的內容;

AJAX(Asynchronous Javascript and XML)---非同步互動(通訊)

1、 涉及的技術內容

1) 使用XHTMLCSS標準的顯示技術;

2) 使用DOM進行動態顯示和互動;

3) XMLXSLT進行資料交換和處理;

4) XMLHttpRequest進行資料的檢索---瀏覽器內建的物件;

5) Javascript來將以上技術融合;

2、 非同步通訊工作原理(新思路)

同步:使用者(在URL位址列輸入頁面請求http://www.baidu.com----伺服器端接收到請求,進行相應處理(這段時間客戶處於等待狀態,後續操作被暫停)------

返回資料到客戶端----客戶才能繼續操作

非同步:使用者(在URL位址列輸入頁面請求http://www.baidu.com

--

伺服器接受資訊(函式或者新方法等待接受資訊)-----客戶端繼續向

下執行(如果伺服器處理請求結束,結果返回到新方法,)-----瀏覽器

只處理所需的資料(不涉及整個頁面的重新整理)

3、 功能

1) 改善表單驗證方式,不需要開啟新的頁面,也不需要進行整個

頁面的提交;

2) 不需要重新整理,減少了客戶的等待時間;

3) 按需要獲取資料資訊;

4) 讀取外部的資料,進行整合;

5) 非同步互動

4、 登入的案例

1) 伺服器端檔案demo.php

功能:驗證使用者名稱稱的合法性

2) 前臺頁面index.html

功能:顯示輸入使用者名稱的區域

jquery 是一個Javascript庫,簡化程式設計過程

      ajax的一個框架;

使用:<script type=text/javascript src=檔案></script>

GET:將資訊通過URL位址列進行傳遞;

POST:將資訊通過HTTP方式進行傳遞;

瀏覽器顯示:html\css\javascript等型別頁面呼叫元件

Xml-----activeXObject(支援多媒體功能、效果等)

同步:

 一個表單包含所有資訊(使用者、口令、身份證等)

Submit 作用:針對表單物件,點選後執行---將表單區域包含

  所有資料通過method屬性指定的方式傳送到action屬性指定

的檔案裡

Get:把表單裡所有(inputselecttextarea等)資料當作引數

     通過URL位址列傳遞

    http://../indec.php?name=zhangsan&email=””....

Post:把資料通過HTTP傳遞

     名字:值

Firebug:除錯功能

Step over:單步執行(進入) 按照語句的順序執行,當碰到方法,不進入

         方法體內部

Step into: 單步執行(跳過) 按照語句的順序執行,當碰到方法,進入

         方法體內部

Step out :跳出    結束執行

瀏覽器的快取:

兩次輸入的請求相同,瀏覽器不會每次都到伺服器端獲取頁面資訊

避免快取採取方法:在URL後增加時間資訊

第二種方式實現AJAX

XMLHttpRequest物件

新的瀏覽器具備元件XMLHttpRequest

IE7IE8firefoxmozillaroperasafarichrom

舊的瀏覽器控制元件ActiveXObject

開放的集合(提供了實現各種功能的方法,flash、動態效果)

IE6IE5.5IE5

Php操作xml

Php內建DOMDocument

   $_doc = new DOMDocument();   //DOM物件

   $_doc->getElementsByTagName()  //nodelist物件 item length

Javascript操作

XML domdocument 

Var a = new activexobject;  //dom節點物件

   a.getelementbyid()