成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 掌握AJAX第1/7頁

掌握AJAX第1/7頁

熱門標簽:許昌智能電銷機器人公司 遼寧銀行智能外呼系統(tǒng) 姜堰電銷機器人 海南銀行智能外呼系統(tǒng)商家 澳大利亞城市地圖標注 電銷機器人違法了嗎 上海浦東騰訊地圖標注位置 遼寧正規(guī)電銷機器人 辰溪地圖標注

Ajax 由 HTML、JavaScript™ 技術(shù)、DHTML 和 DOM 組成,這一杰出的方法可以將笨拙的 Web 界面轉(zhuǎn)化成交互性的 Ajax 應(yīng)用程序。本文的作者是一位 Ajax 專家,他演示了這些技術(shù)如何協(xié)同工作 —— 從總體概述到細節(jié)的討論 —— 使高效的 Web 開發(fā)成為現(xiàn)實。他還揭開了 Ajax 核心概念的神秘面紗,包括 XMLHttpRequest 對象。

五年前,如果不知道 XML,您就是一只無人重視的丑小鴨。十八個月前,Ruby 成了關(guān)注的中心,不知道 Ruby 的程序員只能坐冷板凳了。今天,如果想跟上最新的技術(shù)時尚,那您的目標就是 Ajax。

但是,Ajax 不僅僅 是一種時尚,它是一種構(gòu)建網(wǎng)站的強大方法,而且不像學習一種全新的語言那樣困難。

但在詳細探討 Ajax 是什么之前,先讓我們花幾分鐘了解 Ajax 做 什么。目前,編寫應(yīng)用程序時有兩種基本的選擇:

·桌面應(yīng)用程序
·Web 應(yīng)用程序

兩者是類似的,桌面應(yīng)用程序通常以 CD 為介質(zhì)(有時候可從網(wǎng)站下載)并完全安裝到您的計算機上。桌面應(yīng)用程序可能使用互聯(lián)網(wǎng)下載更新,但運行這些應(yīng)用程序的代碼在桌面計算機上。Web 應(yīng)用程序運行在某處的 Web 服務(wù)器上 —— 毫不奇怪,要通過 Web 瀏覽器訪問這種應(yīng)用程序。

不過,比這些應(yīng)用程序的運行代碼放在何處更重要的是,應(yīng)用程序如何運轉(zhuǎn)以及如何與其進行交互。桌面應(yīng)用程序一般很快(就在您的計算機上運行,不用等待互聯(lián)網(wǎng)連接),具有漂亮的用戶界面(通常和操作系統(tǒng)有關(guān))和非凡的動態(tài)性??梢詥螕簟⑦x擇、輸入、打開菜單和子菜單、到處巡游,基本上不需要等待。

另一方面,Web 應(yīng)用程序是最新的潮流,它們提供了在桌面上不能實現(xiàn)的服務(wù)(比如 Amazon.com 和 eBay)。但是,伴隨著 Web 的強大而出現(xiàn)的是等待,等待服務(wù)器響應(yīng),等待屏幕刷新,等待請求返回和生成新的頁面。

顯然這樣說過于簡略了,但基本的概念就是如此。您可能已經(jīng)猜到,Ajax 嘗試建立桌面應(yīng)用程序的功能和交互性,與不斷更新的 Web 應(yīng)用程序之間的橋梁??梢允褂孟褡烂鎽?yīng)用程序中常見的動態(tài)用戶界面和漂亮的控件,不過是在 Web 應(yīng)用程序中。

還等什么呢?我們來看看 Ajax 如何將笨拙的 Web 界面轉(zhuǎn)化成能迅速響應(yīng)的 Ajax 應(yīng)用程序吧。

老技術(shù),新技巧

在談到 Ajax 時,實際上涉及到多種技術(shù),要靈活地運用它必須深入了解這些不同的技術(shù)(本系列的頭幾篇文章將分別討論這些技術(shù))。好消息是您可能已經(jīng)非常熟悉其中的大部分技術(shù),更好的是這些技術(shù)都很容易學習,并不像完整的編程語言(如 Java 或 Ruby)那樣困難。

下面是 Ajax 應(yīng)用程序所用到的基本技術(shù):

·HTML 用于建立 Web 表單并確定應(yīng)用程序其他部分使用的字段。
·JavaScript 代碼是運行 Ajax 應(yīng)用程序的核心代碼,幫助改進與服務(wù)器應(yīng)用程序的通信。
·DHTML 或 Dynamic HTML,用于動態(tài)更新表單。我們將使用 div、span 和其他動態(tài) HTML 元素來標記 HTML。
·文檔對象模型 DOM 用于(通過 JavaScript 代碼)處理 HTML 結(jié)構(gòu)和(某些情況下)服務(wù)器返回的 XML。

Ajax 的定義

順便說一下,Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的縮寫。這個短語是 Adaptive Path 的 Jesse James Garrett 發(fā)明的(請參閱 參考資料),按照 Jesse 的解釋,這不是 個首字母縮寫詞。

我們來進一步分析這些技術(shù)的職責。以后的文章中我將深入討論這些技術(shù),目前只要熟悉這些組件和技術(shù)就可以了。對這些代碼越熟悉,就越容易從對這些技術(shù)的零散了解轉(zhuǎn)變到真正把握這些技術(shù)(同時也真正打開了 Web 應(yīng)用程序開發(fā)的大門)。

XMLHttpRequest 對象

要了解的一個對象可能對您來說也是最陌生的,即 XMLHttpRequest。這是一個 JavaScript 對象,創(chuàng)建該對象很簡單,如清單 1 所示。

清單 1. 創(chuàng)建新的 XMLHttpRequest 對象

script language="javascript" type="text/javascript">
var xmlHttp = new XMLHttpRequest();
/script>

下一期文章中將進一步討論這個對象,現(xiàn)在要知道這是處理所有服務(wù)器通信的對象。繼續(xù)閱讀之前,先停下來想一想:通過 XMLHttpRequest 對象與服務(wù)器進行對話的是 JavaScript 技術(shù)。這不是一般的應(yīng)用程序流,這恰恰是 Ajax 的強大功能的來源。

在一般的 Web 應(yīng)用程序中,用戶填寫表單字段并單擊 Submit 按鈕。然后整個表單發(fā)送到服務(wù)器,服務(wù)器將它轉(zhuǎn)發(fā)給處理表單的腳本(通常是 PHP 或 Java,也可能是 CGI 進程或者類似的東西),腳本執(zhí)行完成后再發(fā)送回全新的頁面。該頁面可能是帶有已經(jīng)填充某些數(shù)據(jù)的新表單的 HTML,也可能是確認頁面,或者是具有根據(jù)原來表單中輸入數(shù)據(jù)選擇的某些選項的頁面。當然,在服務(wù)器上的腳本或程序處理和返回新表單時用戶必須等待。屏幕變成一片空白,等到服務(wù)器返回數(shù)據(jù)后再重新繪制。這就是交互性差的原因,用戶得不到立即反饋,因此感覺不同于桌面應(yīng)用程序。

Ajax 基本上就是把 JavaScript 技術(shù)和 XMLHttpRequest 對象放在 Web 表單和服務(wù)器之間。當用戶填寫表單時,數(shù)據(jù)發(fā)送給一些 JavaScript 代碼而不是 直接發(fā)送給服務(wù)器。相反,JavaScript 代碼捕獲表單數(shù)據(jù)并向服務(wù)器發(fā)送請求。同時用戶屏幕上的表單也不會閃爍、消失或延遲。換句話說,JavaScript 代碼在幕后發(fā)送請求,用戶甚至不知道請求的發(fā)出。更好的是,請求是異步發(fā)送的,就是說 JavaScript 代碼(和用戶)不用等待服務(wù)器的響應(yīng)。因此用戶可以繼續(xù)輸入數(shù)據(jù)、滾動屏幕和使用應(yīng)用程序。

然后,服務(wù)器將數(shù)據(jù)返回 JavaScript 代碼(仍然在 Web 表單中),后者決定如何處理這些數(shù)據(jù)。它可以迅速更新表單數(shù)據(jù),讓人感覺應(yīng)用程序是立即完成的,表單沒有提交或刷新而用戶得到了新數(shù)據(jù)。JavaScript 代碼甚至可以對收到的數(shù)據(jù)執(zhí)行某種計算,再發(fā)送另一個請求,完全不需要用戶干預!這就是 XMLHttpRequest 的強大之處。它可以根據(jù)需要自行與服務(wù)器進行交互,用戶甚至可以完全不知道幕后發(fā)生的一切。結(jié)果就是類似于桌面應(yīng)用程序的動態(tài)、快速響應(yīng)、高交互性的體驗,但是背后又擁有互聯(lián)網(wǎng)的全部強大力量。

加入一些 JavaScript

得到 XMLHttpRequest 的句柄后,其他的 JavaScript 代碼就非常簡單了。事實上,我們將使用 JavaScript 代碼完成非?;镜娜蝿?wù):

·獲取表單數(shù)據(jù):JavaScript 代碼很容易從 HTML 表單中抽取數(shù)據(jù)并發(fā)送到服務(wù)器。
·修改表單上的數(shù)據(jù):更新表單也很簡單,從設(shè)置字段值到迅速替換圖像。
·解析 HTML 和 XML:使用 JavaScript 代碼操縱 DOM(請參閱 下一節(jié)),處理 HTML 表單服務(wù)器返回的 XML 數(shù)據(jù)的結(jié)構(gòu)。

對于前兩點,需要非常熟悉 getElementById() 方法,如 清單 2 所示。

清單 2. 用 JavaScript 代碼捕獲和設(shè)置字段值

// Get the value of the "phone" field and stuff it in a variable called phone
var phone = document.getElementById("phone").value;

// Set some values on a form using an array called response
document.getElementById("order").value = response[0];
document.getElementById("address").value = response[1];

這里沒有特別需要注意的地方,真是好極了!您應(yīng)該認識到這里并沒有非常復雜的東西。只要掌握了 XMLHttpRequest,Ajax 應(yīng)用程序的其他部分就是如 清單 2 所示的簡單 JavaScript 代碼了,混合有少量的 HTML。同時,還要用一點兒 DOM,我們就來看看吧。

以 DOM 結(jié)束

最后還有 DOM,即文檔對象模型??赡軐τ行┳x者來說 DOM 有點兒令人生畏,HTML 設(shè)計者很少使用它,即使 JavaScript 程序員也不大用到它,除非要完成某項高端編程任務(wù)。大量使用 DOM 的是 復雜的 Java 和 C/C++ 程序,這可能就是 DOM 被認為難以學習的原因。

幸運的是,在 JavaScript 技術(shù)中使用 DOM 很容易,也非常直觀?,F(xiàn)在,按照常規(guī)也許應(yīng)該說明如何使用 DOM,或者至少要給出一些示例代碼,但這樣做也可能誤導您。即使不理會 DOM,仍然能深入地探討 Ajax,這也是我準備采用的方法。以后的文章將再次討論 DOM,現(xiàn)在只要知道可能需要 DOM 就可以了。當需要在 JavaScript 代碼和服務(wù)器之間傳遞 XML 和改變 HTML 表單的時候,我們再深入研究 DOM。沒有它也能做一些有趣的工作,因此現(xiàn)在就把 DOM 放到一邊吧。

獲取 Request 對象

有了上面的基礎(chǔ)知識后,我們來看看一些具體的例子。XMLHttpRequest 是 Ajax 應(yīng)用程序的核心,而且對很多讀者來說可能還比較陌生,我們就從這里開始吧。從 清單 1 可以看出,創(chuàng)建和使用這個對象非常簡單,不是嗎?等一等。

還記得幾年前的那些討厭的瀏覽器戰(zhàn)爭嗎?沒有一樣東西在不同的瀏覽器上得到同樣的結(jié)果。不管您是否相信,這些戰(zhàn)爭仍然在繼續(xù),雖然規(guī)模較小。但令人奇怪的是,XMLHttpRequest 成了這場戰(zhàn)爭的犧牲品之一。因此獲得 XMLHttpRequest 對象可能需要采用不同的方法。下面我將詳細地進行解釋。

使用 Microsoft 瀏覽器

Microsoft 瀏覽器 Internet Explorer 使用 MSXML 解析器處理 XML(可以通過 參考資料 進一步了解 MSXML)。因此如果編寫的 Ajax 應(yīng)用程序要和 Internet Explorer 打交道,那么必須用一種特殊的方式創(chuàng)建對象。

但并不是這么簡單。根據(jù) Internet Explorer 中安裝的 JavaScript 技術(shù)版本不同,MSXML 實際上有兩種不同的版本,因此必須對這兩種情況分別編寫代碼。請參閱 清單 3,其中的代碼在 Microsoft 瀏覽器上創(chuàng)建了一個 XMLHttpRequest。

清單 3. 在 Microsoft 瀏覽器上創(chuàng)建 XMLHttpRequest 對象

var xmlHttp = false;
try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    xmlHttp = false;
  }
}

您對這些代碼可能還不完全理解,但沒有關(guān)系。當本系列文章結(jié)束的時候,您將對 JavaScript 編程、錯誤處理、條件編譯等有更深的了解?,F(xiàn)在只要牢牢記住其中的兩行代碼:

xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");。

這兩行代碼基本上就是嘗試使用一個版本的 MSXML 創(chuàng)建對象,如果失敗則使用另一個版本創(chuàng)建該對象。不錯吧?如果都不成功,則將 xmlHttp 變量設(shè)為 false,告訴您的代碼出現(xiàn)了問題。如果出現(xiàn)這種情況,可能是因為安裝了非 Microsoft 瀏覽器,需要使用不同的代碼。

處理 Mozilla 和非 Microsoft 瀏覽器

如果選擇的瀏覽器不是 Internet Explorer,或者為非 Microsoft 瀏覽器編寫代碼,就需要使用不同的代碼。事實上就是 清單 1 所示的一行簡單代碼:

var xmlHttp = new XMLHttpRequest object;。

這行簡單得多的代碼在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 Ajax 的非 Microsoft 瀏覽器中,創(chuàng)建了 XMLHttpRequest 對象。

結(jié)合起來

關(guān)鍵是要支持所有 瀏覽器。誰愿意編寫一個只能用于 Internet Explorer 或者非 Microsoft 瀏覽器的應(yīng)用程序呢?或者更糟,要編寫一個應(yīng)用程序兩次?當然不!因此代碼要同時支持 Internet Explorer 和非 Microsoft 瀏覽器。清單 4 顯示了這樣的代碼。

清單 4. 以支持多種瀏覽器的方式創(chuàng)建 XMLHttpRequest 對象

/* Create a new XMLHttpRequest object to talk to the Web server */
var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    xmlHttp = false;
  }
}
@end @*/

if (!xmlHttp typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}

現(xiàn)在先不管那些注釋掉的奇怪符號,如 @cc_on,這是特殊的 JavaScript 編譯器命令,將在下一期針對 XMLHttpRequest 的文章中詳細討論。這段代碼的核心分為三步:

1、建立一個變量 xmlHttp 來引用即將創(chuàng)建的 XMLHttpRequest 對象。
2、嘗試在 Microsoft 瀏覽器中創(chuàng)建該對象:
      1)嘗試使用 Msxml2.XMLHTTP 對象創(chuàng)建它。 
      2)如果失敗,再嘗試 Microsoft.XMLHTTP 對象。
2、如果仍然沒有建立 xmlHttp,則以非 Microsoft 的方式創(chuàng)建該對象。
最后,xmlHttp 應(yīng)該引用一個有效的 XMLHttpRequest 對象,無論運行什么樣的瀏覽器。

關(guān)于安全性的一點說明

安全性如何呢?現(xiàn)在瀏覽器允許用戶提高他們的安全等級,關(guān)閉 JavaScript 技術(shù),禁用瀏覽器中的任何選項。在這種情況下,代碼無論如何都不會工作。此時必須適當?shù)靥幚韱栴},這需要單獨的一篇文章來討論,要放到以后了(這個系列夠長了吧?不用擔心,讀完之前也許您就掌握了)?,F(xiàn)在要編寫一段健壯但不夠完美的代碼,對于掌握 Ajax 來說就很好了。以后我們還將討論更多的細節(jié)。

Ajax 世界中的請求/響應(yīng)

現(xiàn)在我們介紹了 Ajax,對 XMLHttpRequest 對象以及如何創(chuàng)建它也有了基本的了解。如果閱讀得很仔細,您可能已經(jīng)知道與服務(wù)器上的 Web 應(yīng)用程序打交道的是 JavaScript 技術(shù),而不是直接提交給那個應(yīng)用程序的 HTML 表單。

還缺少什么呢?到底如何使用 XMLHttpRequest。因為這段代碼非常重要,您編寫的每個 Ajax 應(yīng)用程序都要以某種形式使用它,先看看 Ajax 的基本請求/響應(yīng)模型是什么樣吧。

發(fā)出請求

您已經(jīng)有了一個嶄新的 XMLHttpRequest 對象,現(xiàn)在讓它干點活兒吧。首先需要一個 Web 頁面能夠調(diào)用的 JavaScript 方法(比如當用戶輸入文本或者從菜單中選擇一項時)。接下來就是在所有 Ajax 應(yīng)用程序中基本都雷同的流程:

1、從 Web 表單中獲取需要的數(shù)據(jù)。
2、建立要連接的 URL。
3、打開到服務(wù)器的連接。
4、設(shè)置服務(wù)器在完成后要運行的函數(shù)。
5、發(fā)送請求。

清單 5 中的示例 Ajax 方法就是按照這個順序組織的:

清單 5. 發(fā)出 Ajax 請求

function callServer() {
  // Get the city and state from the web form
  var city = document.getElementById("city").value;
  var state = document.getElementById("state").value;
  // Only go on if there are values for both fields
  if ((city == null) || (city == "")) return;
  if ((state == null) || (state == "")) return;

  // Build the URL to connect to
  var url = "/scripts/getZipCode.php?city=" + escape(city) + "state=" + escape(state);

  // Open a connection to the server
  xmlHttp.open("GET", url, true);

  // Setup a function for the server to run when it's done
  xmlHttp.onreadystatechange = updatePage;

  // Send the request
  xmlHttp.send(null);
}

其中大部分代碼意義都很明確。開始的代碼使用基本 JavaScript 代碼獲取幾個表單字段的值。然后設(shè)置一個 PHP 腳本作為鏈接的目標。要注意腳本 URL 的指定方式,city 和 state(來自表單)使用簡單的 GET 參數(shù)附加在 URL 之后。

然后打開一個連接,這是您第一次看到使用 XMLHttpRequest。其中指定了連接方法(GET)和要連接的 URL。最后一個參數(shù)如果設(shè)為 true,那么將請求一個異步連接(這就是 Ajax 的由來)。如果使用 false,那么代碼發(fā)出請求后將等待服務(wù)器返回的響應(yīng)。如果設(shè)為 true,當服務(wù)器在后臺處理請求的時候用戶仍然可以使用表單(甚至調(diào)用其他 JavaScript 方法)。

xmlHttp(要記住,這是 XMLHttpRequest 對象實例)的 onreadystatechange 屬性可以告訴服務(wù)器在運行完成 后(可能要用五分鐘或者五個小時)做什么。因為代碼沒有等待服務(wù)器,必須讓服務(wù)器知道怎么做以便您能作出響應(yīng)。在這個示例中,如果服務(wù)器處理完了請求,一個特殊的名為 updatePage() 的方法將被觸發(fā)。

最后,使用值 null 調(diào)用 send()。因為已經(jīng)在請求 URL 中添加了要發(fā)送給服務(wù)器的數(shù)據(jù)(city 和 state),所以請求中不需要發(fā)送任何數(shù)據(jù)。這樣就發(fā)出了請求,服務(wù)器按照您的要求工作。

如果沒有發(fā)現(xiàn)任何新鮮的東西,您應(yīng)該體會到這是多么簡單明了!除了牢牢記住 Ajax 的異步特性外,這些內(nèi)容都相當簡單。應(yīng)該感激 Ajax 使您能夠?qū)P木帉懫恋膽?yīng)用程序和界面,而不用擔心復雜的 HTTP 請求/響應(yīng)代碼。

清單 5 中的代碼說明了 Ajax 的易用性。數(shù)據(jù)是簡單的文本,可以作為請求 URL 的一部分。用 GET 而不是更復雜的 POST 發(fā)送請求。沒有 XML 和要添加的內(nèi)容頭部,請求體中沒有要發(fā)送的數(shù)據(jù);換句話說,這就是 Ajax 的烏托邦。

不用擔心,隨著本系列文章的展開,事情會變得越來越復雜。您將看到如何發(fā)送 POST 請求、如何設(shè)置請求頭部和內(nèi)容類型、如何在消息中編碼 XML、如何增加請求的安全性,可以做的工作還有很多!暫時先不用管那些難點,掌握好基本的東西就行了,很快我們就會建立一整套的 Ajax 工具庫。

處理響應(yīng)

現(xiàn)在要面對服務(wù)器的響應(yīng)了?,F(xiàn)在只要知道兩點:

·什么也不要做,直到 xmlHttp.readyState 屬性的值等于 4。
·服務(wù)器將把響應(yīng)填充到 xmlHttp.responseText 屬性中。

其中的第一點,即就緒狀態(tài),將在下一篇文章中詳細討論,您將進一步了解 HTTP 請求的階段,可能比您設(shè)想的還多?,F(xiàn)在只要檢查一個特定的值(4)就可以了(下一期文章中還有更多的值要介紹)。第二點,使用 xmlHttp.responseText 屬性獲得服務(wù)器的響應(yīng),這很簡單。清單 6 中的示例方法可供服務(wù)器根據(jù) 清單 5 中發(fā)送的數(shù)據(jù)調(diào)用。

清單 6. 處理服務(wù)器響應(yīng)

function updatePage() {
  if (xmlHttp.readyState == 4) {
    var response = xmlHttp.responseText;
    document.getElementById("zipCode").value = response;
  }
}

這些代碼同樣既不難也不復雜。它等待服務(wù)器調(diào)用,如果是就緒狀態(tài),則使用服務(wù)器返回的值(這里是用戶輸入的城市和州的 ZIP 編碼)設(shè)置另一個表單字段的值。于是包含 ZIP 編碼的 zipCode 字段突然出現(xiàn)了,而用戶沒有按任何按鈕!這就是前面所說的桌面應(yīng)用程序的感覺。快速響應(yīng)、動態(tài)感受等等,這些都只因為有了小小的一段 Ajax 代碼。

細心的讀者可能注意到 zipCode 是一個普通的文本字段。一旦服務(wù)器返回 ZIP 編碼,updatePage() 方法就用城市/州的 ZIP 編碼設(shè)置那個字段的值,用戶就可以改寫該值。這樣做有兩個原因:保持例子簡單,說明有時候可能希望 用戶能夠修改服務(wù)器返回的數(shù)據(jù)。要記住這兩點,它們對于好的用戶界面設(shè)計來說很重要。

連接 Web 表單

還有什么呢?實際上沒有多少了。一個 JavaScript 方法捕捉用戶輸入表單的信息并將其發(fā)送到服務(wù)器,另一個 JavaScript 方法監(jiān)聽和處理響應(yīng),并在響應(yīng)返回時設(shè)置字段的值。所有這些實際上都依賴于調(diào)用 第一個 JavaScript 方法,它啟動了整個過程。最明顯的辦法是在 HTML 表單中增加一個按鈕,但這是 2001 年的辦法,您不這樣認為嗎?還是像 清單 7 這樣利用 JavaScript 技術(shù)吧。

清單 7. 啟動一個 Ajax 過程

form>
 p>City: input type="text" name="city" id="city" size="25"
       onChange="callServer();" />/p>
 p>State: input type="text" name="state" id="state" size="25"
       onChange="callServer();" />/p>
 p>Zip Code: input type="text" name="zipCode" id="city" size="5" />/p>
/form>

如果感覺這像是一段相當普通的代碼,那就對了,正是如此!當用戶在 city 或 state 字段中輸入新的值時,callServer() 方法就被觸發(fā),于是 Ajax 開始運行了。有點兒明白怎么回事了吧?好,就是如此!

結(jié)束語

現(xiàn)在您可能已經(jīng)準備開始編寫第一個 Ajax 應(yīng)用程序了,至少也希望認真讀一下 參考資料 中的那些文章了吧?但可以首先從這些應(yīng)用程序如何工作的基本概念開始,對 XMLHttpRequest 對象有基本的了解。在下一期文章中,您將掌握這個對象,學會如何處理 JavaScript 和服務(wù)器的通信、如何使用 HTML 表單以及如何獲得 DOM 句柄。

現(xiàn)在先花點兒時間考慮考慮 Ajax 應(yīng)用程序有多么強大。設(shè)想一下,當單擊按鈕、輸入一個字段、從組合框中選擇一個選項或者用鼠標在屏幕上拖動時,Web 表單能夠立刻作出響應(yīng)會是什么情形。想一想異步 究竟意味著什么,想一想 JavaScript 代碼運行而且不等待 服務(wù)器對它的請求作出響應(yīng)。會遇到什么樣的問題?會進入什么樣的領(lǐng)域?考慮到這種新的方法,編程的時候應(yīng)如何改變表單的設(shè)計?

如果在這些問題上花一點兒時間,與簡單地剪切/粘貼某些代碼到您根本不理解的應(yīng)用程序中相比,收益會更多。在下一期文章中,我們將把這些概念付諸實踐,詳細介紹使應(yīng)用程序按照這種方式工作所需要的代碼。因此,現(xiàn)在先享受一下 Ajax 所帶來的可能性吧。

1234567下一頁閱讀全文

標簽:崇左 威海 撫州 深圳 伊春 銅川 晉城 西藏

巨人網(wǎng)絡(luò)通訊聲明:本文標題《掌握AJAX第1/7頁》,本文關(guān)鍵詞  掌握,AJAX,第,7頁,掌握,AJAX,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《掌握AJAX第1/7頁》相關(guān)的同類信息!
  • 本頁收集關(guān)于掌握AJAX第1/7頁的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    天天操天天干天天操天天干| japanese日本护士撒尿| 无码一区二区三区在线观看| 99精品视频在线观看免费| 亚洲第一视频网| 无码国模国产在线观看| 国产精品视频一区二区三区,| 国产91视频在线| 久久人人爽人人| 96sao精品免费视频观看| 国产精品12| 精品一区二区国语对白| 亚洲美女黄色片| 久久综合色播| 国产精品无码专区av免费播放| 91免费国产网站| 最新版天堂资源在线| 免费在线观看黄色av| 伊人影院在线播放| 9191在线| se在线电影| 亚洲国产精品成人天堂| 天堂成人娱乐在线视频免费播放网站| 性娇小13――14欧美| 亚洲色图图片专区| 欧美日韩免费看| 日韩欧美网站| 丝瓜av网站精品一区二区| 精品欠久久久中文字幕加勒比| 欧美xxxxbb| 伊人网综合视频| 欧美最猛性xxxxxhd| 亚洲网站视频| 天堂综合在线播放| 擼擼色在线看观看免费| 久久视频免费在线| 大香一本蕉伊线亚洲网| 欧美黑人性生活视频| 欧美在线免费观看亚洲| 欧美videos另类| www.51av欧美视频| 黄色一级视频网站| 亚洲宅男网av| 国产精品不卡av| 中文字幕精品一区日韩| 国产精品一卡二卡在线观看| 中日韩高清电影网| 国产成人精品亚洲午夜麻豆| 真人做人试看60分钟免费| 午夜精品一区二区三区视频免费看| 97在线观视频免费观看| 中文字幕第7页| 国产一区啦啦啦在线观看| 一区二区中文字| 欧美美乳视频网站在线观看| 成人精品免费视频| 欧美经典一区二区三区| 蜜桃av一区二区在线观看| 精产国品一二三区| 久久精品国产亚洲高清剧情介绍| 先锋影音av中文字幕| 99久久婷婷国产综合精品| 久久久久久网址| www.男人的天堂.com| 97免费视频观看| www.亚洲一区二区三区| 波多野结衣乳巨码无在线观看| 亚洲欧美另类自拍| 久久国际精品| 超碰在线cao| 国产不卡av在线播放| 成人午夜精品一区二区三区| 小早川怜子一区二区的演员表| 91狠狠综合久久久| 久久99热这里只有精品国产| 久草国产精品视频| 91麻豆精品国产91久久综合| 你懂的在线网址| 粉嫩av一区二区三区| 女同性一区二区三区人了人一| 四虎成人永久地址| 免费自拍视频| 欧美极品欧美精品欧美图片| 亚洲国产免费av| 日韩欧美视频免费在线观看| 中文不卡在线| 三年中国国语在线播放免费| 久久综合久久99| 欧美资源在线| 国产三级视频| 美女黄毛**国产精品啪啪| 日韩一区日韩二区| 国产精品igao视频网网址不卡日韩| 国产精品日韩一区二区三区| 丝袜美女在线观看| 国产麻豆欧美日韩一区| 日韩经典中文字幕一区| 超碰公开在线| 国产高清一区二区三区四区| 91小视频免费看| 亚洲mv大片欧洲mv大片精品| 97精品久久人人爽人人爽| 亚洲少妇xxx| 欧美精品久久久久久久久| 中文区中文字幕免费看| 国产一区91精品张津瑜| 日本电影一区二区在线观看| 精品素人av| 久久久久久久久久久久久久一区| 五月综合网站| 在线欧美三区| 精品人妻人人做人人爽夜夜爽| 一区二区三区激情| 欧美自拍电影| 国产精品色呦| 四虎永久在线高清国产精品| 欧美激情久久久久久久| 视频一区 中文字幕| 亚洲人成在线观看一区二区| 国产suv一区二区| 日韩免费va| 91免费国产网站| 少妇人妻大乳在线视频| 日本免费无人高清| 欧美大交乱xxxxbbbb| jizz性欧美23| 国产伦理久久久久久妇女| 国产三级电影| 欧美不卡一区二区三区| 久草热久草在线频| 国产精品国产精品国产专区| 亚洲国产精品久久久久秋霞不卡| 污视频软件在线观看| 亚洲奶水xxxx哺乳期| 日本成人免费在线观看| 91精品国产高清久久久久久| 亚洲成av人片在线观看无码| 又爽又大又黄a级毛片在线视频| 欧美婷婷久久五月精品三区| 精品人妻无码一区二区色欲产成人| 成人av免费看| 亚洲在线观看视频| 日韩精品不卡| seba5欧美综合另类| 国产高清视频网站| 成年女人在线视频| 可以在线观看的黄色| av小说天堂网| 成人午夜无人区一区二区| 在线观看免费视频综合| 激情一区二区| 亚洲欧美日韩久久久久久| 亚洲精品国产精品国自产网站| 欧美午夜女人视频在线| 亚洲精选一区二区三区| 国产青青草视频| 女人18毛片一区二区三区| 大地资源第二页在线观看高清版| 亚洲精品按摩视频| 免费人成福利播放| 99久久久精品免费观看国产蜜| 国产厕所精品在线观看| 一区二区三区中文免费| 亚洲第一黄网| 欧美一区午夜视频在线观看| 在线播放中文字幕一区| 欧美日韩在线视频免费| 欧美日韩综合高清一区二区| 日韩av片子| 日本视频免费高清一本18| 国产嫩草在线视频| 美女被内谢流白浆高视频| 亚洲国产高清在线观看视频| 不卡av在线免费观看| 少妇淫片在线影院| 久久精品人人做人人爽电影| 成人avav在线| 久久国产精品久久精品| 伊人资源视频在线| 91精品视频播放| 亚洲精品高清视频在线观看| 天天操天天爽天天干| 欧美日本国产在线| 亚洲三级毛片| 人妻换人妻仑乱| 青青草视频免费在线观看| 国产精品成人无码专区| 国产极品一区二区| 国内av一区二区| 999精品久久久| 精品亚洲一区二区三区在线观看| 毛片网站免费哦| 91网站视频在线观看| 18成人在线| 国产又粗又猛又爽又黄的| 亚洲97在线观看| 久久亚洲精品国产精品紫薇| 最新成人av在线| 美女精品视频一区| 污片免费在线观看| 国产熟妇久久777777| 亚洲精品色婷婷福利天堂| 波多野结衣影院| 日韩精品免费电影| 91网站免费入口| 91在线观看入口| 欧美s码亚洲码精品m码| 久久精品国产亚洲av高清色欲| 永久免费精品视频网站| 中文字幕在线亚洲三区| 欧美网站免费观看| 九九热精品在线视频| caopor在线视频| 亚洲二区在线观看| 97精品国产露脸对白| 日本成人在线免费视频| 中国特级黄色片| 久久久久国产| 免费黄色片在线观看| 黄色片在线观看免费| 亚洲第一天堂在线观看| 性欧美疯狂猛交69hd| 青春草视频在线| 欧美孕妇性xxxⅹ精品hd| 日韩黄色视屏| 成人影院在线免费观看| 亚洲视频中文| 精品人妻一区二区三区含羞草| 亚洲kkk444kkk在线观看| 蜜桃视频一区二区在线观看| 2024国产精品视频| 天堂资源中文在线| 欧美一区二区中文字幕| 波多野结衣成人在线| 国产成人久久精品77777最新版本| 性欧美18xxxhd| 一区二区三区日韩视频| 日本一本中文字幕| 亚洲五月天综合| 黄色一级视频免费观看| 亚洲成人xxx| a片在线免费观看| 国产精品xxxx| 亚洲一区国产一区| 欧美日韩第一区日日骚| 精品日韩毛片| 1000精品久久久久久久久| 一区二区三区|亚洲午夜| www.欧美精品一二区| 91麻豆国产语对白在线观看| 午夜影院免费播放| 一级欧美一级日韩片| 亚洲精品自拍动漫在线| 久久久久久久久久一级| 不卡一区二区三区四区五区| av激情在线观看| 激情视频网站在线播放色| 日日夜夜免费精品视频| 黄页网站在线观看| 日韩av大片| 天堂√在线中文官网在线| 色噜噜狠狠色综合网| 99鲁鲁精品一区二区三区| 亚洲婷婷综合网| 91av视频在线| 无码国产精品一区二区高潮| 日本中文字幕免费在线观看| 久久久综合香蕉尹人综合网| 亚洲www在线观看| 久久婷婷久久一区二区三区| 欧洲亚洲女同hd| 国产精品美女久久久久aⅴ| 不卡一区二区中文字幕| 国产精品成人一区二区三区| 久草亚洲一区| 成人18在线| 国产黄色片av| 伪装者在线观看完整版免费| 色视频在线观看福利| 国产一精品一av一免费爽爽| 男人的天堂最新网址| 免费看黄在线看| 国产欧美高清| 亚洲精品www久久久久久广东| 欧美日韩二三区| 精品国产乱码一区二区三| 午夜日韩在线电影| 香蕉视频官网在线观看日本一区二区| 激情美女网站| 日韩精品在线观看一区二区| 在线免费观看视频| 九色中文视频| 国产精品免费久久| 99re这里只有| 色爱区成人综合网| 777久久精品| 91插插插插插插| 亚洲最大免费视频| 国产亚洲欧洲黄色| 777永久免费网站国产| 老司机深夜福利在线观看| 成人影院网站ww555久久精品| 羞羞视频网站在线免费观看| 亚洲欧美日韩不卡一区二区三区| 亚洲娇小娇小娇小| 在线观看制服搞黄视频| 亚洲毛片亚洲毛片亚洲毛片| 91精品视频在线免费观看| 日韩欧美一区在线观看| 日本精品久久久久中文字幕| 91精品欧美一区二区三区综合在| 鲁丝一区二区三区免费| 国产精品伦理| 黑人与娇小精品av专区| 久久久久久久久97| jizz18日本| www在线视频观看| 亚洲高清免费一级二级三级| 日本天堂网在线| 新天堂中文资源官网在线观看| 三年片大全在线观看大全有哪些| 亚洲乱码精品| 国内国产精品久久| 国产亚洲小视频| 国产v综合v亚洲欧| 大j8黑人w巨大888a片| 蜜臀av一区| 蜜桃精品在线|