使用者工具

網站工具


webdesign:head_rush_ajax

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

下次修改
前次修改
webdesign:head_rush_ajax [2007/02/26 00:15] – 建立 wenpeiwebdesign:head_rush_ajax [2007/02/26 01:08] (目前版本) – wenpei
行 10: 行 10:
  
 ==== 建立請求物件 ==== ==== 建立請求物件 ====
 +靜態 JavaScript:程式不在任何 function 中,當瀏覽器載入頁面時即執行
 <code> <code>
 <script language="javascript" type="text/javascript"> <script language="javascript" type="text/javascript">
- +// 靜態 JavaScript 
-var request = null; +        var request = null; 
-function createRequest() {+        // 原本放在 createRequest() 中
         try {         try {
-                 request = new XMLHttpRequest();    // for firefox+                 request = new XMLHttpRequest();    // 非微軟的瀏覽器(Safari、FireFox、Mozilla、Opera...etc)
         } catch (trymicrosoft) {         } catch (trymicrosoft) {
                 try{                 try{
-                         request = new ActiveXObject("Msxml2.XMLHTTP");    // for IE+                         request = new ActiveXObject("Msxml2.XMLHTTP");    // 大多數 IE
                  } catch (othermicrosoft) {                  } catch (othermicrosoft) {
                          try {                          try {
-                                request = new ActiveXObject("Microsoft.XMLHTTP");+                                request = new ActiveXObject("Microsoft.XMLHTTP");    // 還是 IE
                         } catch (failed) {                         } catch (failed) {
                                 request = null;                                 request = null;
行 32: 行 32:
         if (request == null)         if (request == null)
                 alert ("Error creating request object!");                 alert ("Error creating request object!");
-}+
 </code> </code>
 +
 +
  
 ==== 送出請求 ==== ==== 送出請求 ====
 <code> <code>
 function getBoardsSold() { function getBoardsSold() {
-        createRequest();+        // createRequest();    // 已被靜態執行
         var url = "getUpdatedBoardSales-ajax.php";         var url = "getUpdatedBoardSales-ajax.php";
-        url = url + "?dummy=" + new Date().getTime();+        url = url + "?dummy=" + new Date().getTime();    // 解決瀏覽器快取問題
         createRequest();         createRequest();
         request.open("GET", url, true);    // 初始化連線,將資料以 GET 的方式送到伺服器上給 url 檔案處理,true 表非同步         request.open("GET", url, true);    // 初始化連線,將資料以 GET 的方式送到伺服器上給 url 檔案處理,true 表非同步
行 48: 行 50:
 </code> </code>
  
-  * 四種備妥狀態: +四種備妥狀態: 
-    - 連線初始化 +    0. 尚未初始化 
-    - 正在處理 +    1. 連線已經初始化 
-    - 伺服器即將完成請求 +    2. 正在處理 
-    - 完成 +    3. 伺服器即將完成請求,將資料傳給瀏覽器 
-  * onreadystatechange 會影響所有備妥狀態+    4. 完成,可透過請求物件的 responseText 屬性取得回應資料 
 + 
 +  * 每次備妥狀態一改變,瀏覽器都會去執行 onreadystatechange 指定的回呼函式
  
 ==== HTML 部份 ==== ==== HTML 部份 ====
行 86: 行 90:
 } }
 </code> </code>
 +
 +==== IE、Opera 瀏覽器的快取問題 ====
 +若 url 一樣時,瀏覽器會快取,再次送出請求(按下 button)時,瀏覽器會直接拿之前快取的資料,不會真正再向伺服器請求一次資料,造成資料無法更新。
 +
 +在 url 放入一些無意義的假參數(如時間),即可每次產生不同的 url。
 +
 +  url = url + "?dummy=" + new Date().getTime();
webdesign/head_rush_ajax.1172420100.txt.gz · 上一次變更: (外部編輯)