Ajax & PHP 邊學邊練 之一 Ajax基礎

來源:互聯網
上載者:User

       Ajax其實已經使用很久了,但一直也沒有時間正經的找本書系統看看,最近時間比較充裕可以好好補習一下了。本系列是基於Ajax和PHP結合進行講解,主要是想和正在學習或想要學習Ajax的朋友分享下經驗。希望大家多多拍磚共同交流。

       眾所周知,Ajax並不是一個新生的語言,它是一系列語言的結合體:HTML/XHTML、CSS、DOM、XML、XSLT、XMLHttp、JavaScript。可以說Ajax涉及的知識面的確是很廣的,在Web開發中為我們提供了很方便的互動式使用者體驗模式。以往我們瀏覽網頁的原理是由Client向Server提交頁面申請,再由Server將申請通過HTTP傳回給Client產生瀏覽頁面:

       使用Ajax後的工作原理如,可見通過Ajax在使用者互動方面有了很大改進,使用者可以不用為提交了Form而長時間等待伺服器應答,而且通過Ajax也可以開發出華麗的Web互動頁面。

       在使用Ajax時,需要建立XMLHttpRequest對象,不同瀏覽器的建立方式略有不同:

var xmlHttp=null;try{  // Firefox, Opera 8.0+, Safari 非IE瀏覽器  xmlHttp=new XMLHttpRequest();}catch (e){  //IE瀏覽器  try  {    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");  }  catch (e)  {    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");  }}

 

       在利用Ajax向伺服器提交請求時,需要先確定三點:

       1. 使用GET或POST方式提交請求?

       2. 需要請求的頁面(Page)或代碼(Script)?

       3. 將請求的頁面或代碼載入到頁面什麼位置?

function makerequest(serverPage, objID) {  //將要被替換的頁面位置obj  var obj = document.getElementById(objID);  //發出頁面(serverPage)請求  xmlhttp.open("GET", serverPage);  xmlhttp.onreadystatechange = function()  {    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {       //將伺服器返回的資訊替換到頁面位置obj       obj.innerHTML = xmlhttp.responseText;    }  }  xmlhttp.send(null);}

 

       其中readyState表示當前對象狀態,分為0~4的類別,0: uninitialized, 1: loading, 2: loaded, 3: interactive, 4: complete。status表示HTTP響應狀態,常見狀態有200 OK,304 Not Modified,401 Unauthorized,403 Forbidden,404 Not Found,500 Internal Server Error,503 Service Unavailable。代碼中認定readyState==4和status==200為正常狀態。

       下面再來看一個簡單的代碼,當使用者點擊Page1~4時,相應的連結檔案將會顯示在My Webpage頁面中。

<html><head><title>Ajax Sample</title><script type="text/javascript">var xmlHttp=null;try{  xmlHttp=new XMLHttpRequest();}catch (e){  try  {    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");  }  catch (e)  {    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");  }}function makerequest(serverPage,objId){var obj = document.getElementById(objId);  xmlHttp.open("GET", serverPage);  xmlHttp.onreadystatechange = function()   {    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)     {       obj.innerHTML = xmlHttp.responseText;    }  }  xmlHttp.send(null);}</script><body onload="makerequest ('content1.html','hw')">  <div align="center">    <h1>My Webpage</h1>    <a href="content1.html" onclick="makerequest('content1.html','hw'); return false;">Page 1</a>     <a href="content2.html" onclick="makerequest('content2.html','hw'); return false;">Page 2</a>     <a href="content3.html" onclick="makerequest('content3.html','hw'); return false;">Page 3</a>     <a href="content4.html" onclick="makerequest('content4.html','hw'); return false;">Page 4</a>    //這裡就是將要替換content1~4.html內容的位置。    <div id="hw"></div>  </div></body></html>

原始碼下載:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.