2009-10-02 224 views
74

AJAX的本質是什麼?例如,我想在我的頁面上有一個鏈接,這樣當用戶單擊此鏈接時,會將一些信息發送到我的服務器,而無需重新加載當前頁面。那是AJAX嗎?AJAX如何工作?

我能夠通過使用isoframe獲得此行爲。在更多的細節中,我把一個鏈接(比方說一個小圖片)放在一個小的isoframe中。當用戶單擊此鏈接時,瀏覽器僅重新加載isoframe中的頁面。

但是,我認爲這不是達到目標的優雅方式。我想我必須使用AJAX。它是如何工作的? XHTML的使用能否以優雅的方式解決所考慮的問題?或者我需要使用JavaScript?

我不需要太多。我只想要一個小鏈接(點擊後)向服務器發送一些信息。假設我在消息附近有一個「星形圖像」。如果用戶點擊星星(他/她喜歡該消息),星星將更改顏色和我的服務器更新數據庫(以記住用戶喜歡該消息)。

+8

強制性鏈接到維基百科:http://en.wikipedia.org/wiki/Ajax_(programming) – 2009-10-02 14:56:40

+0

要知道答案,請訪問該鏈接: http://www.w3schools.com/php/php_ajax_intro。 asp – 2013-03-27 13:13:56

回答

1

這是ajax。你不能使用沒有JavaScript的Ajax。你應該看看jQuery和原型示例,以瞭解使用情況。

+0

根據一些消息來源,你可以用VBScript來做AJAX。雖然沒有理由這樣做。 :-) – Nosredna 2009-10-02 15:06:53

+0

不,你不能。你可以用VBScript來做AVAX。 – 2009-10-02 15:51:09

+6

heh。我聽說AJAX是異步JavaScript和XML。除了它不一定是異步的,它不一定是JavaScript,它不一定是XML。 – Nosredna 2009-10-02 19:48:13

0

你試圖做的是技術上的ajax。 Ajax創建xhtml片段事務來更新頁面的各個部分。 Javascript使得這些獲得請求很好,很整齊。

5

AJAX代表異步Javascript和XML。 AJAX支持對頁面進行部分更新,而無需將整個頁面發回服務器。

AJAX有很多選項。最值得注意的兩個(可以說是)是微軟的ASP.NET AJAX(以前稱爲Atlas)和jQuery。

如果您已經熟悉ASP.NET,那麼ASP.NET AJAX相對容易設置。如果你已經知道javascript,jQuery是很好的,並且可以非常精確地控制頁面的查詢和更新。

HTH

+1

XML,而不是XHTML,對不對? – Nosredna 2009-10-02 19:47:39

+0

@Nosredna:是的。 – Stardust 2015-12-30 21:45:25

17

AJAX通常涉及從發送端的HTTP請求到服務器並處理服務器的響應,而無需重新加載整個頁面。 (異步)。

的Javascript一般不提交和接收從服務器(傳統XML,往往其他更簡潔的格式,如JSON)

的JavaScript然後可以動態地更新網頁的DOM來更新用戶的視圖中的數據響應。

因此'異步JavaScript和XML'。

還有其他一些選項可以在不重新加載頁面的情況下更新用戶的視圖,比如Flash和Applets,但這些聽起來不像您的案例的好解決方案。聽起來像Javascript是要走的路。有很多優秀的圖書館支持,如本網站使用的jQuery,所以你不需要自己寫很多的Javascript。

+0

我喜歡這個答案。 @Verrtex所有你必須知道的是關於XMLHttpRequest。 – enguerran 2009-10-02 15:03:24

15

AJAX的本質是這樣的:

您的網頁可以瀏覽網頁,並同時 用戶在做其他事情更新自己的內容。

也就是說,您的javascript可以發送異步GET和POST請求(通常通過一個XMLHttpRequest對象),然後使用這些請求的結果修改其頁面(通過Document Object Model操作)。

+0

您能想到的任何例子都可以在我看到這種「自行更新」的行動中嗎? – 2016-06-01 23:23:00

13

Ajax不僅僅是重新加載頁面的一部分。 Ajax代表異步JavaScript和Xml。

您需要的Ajax的唯一部分是來自javascript的XMLHttpRequest對象。你必須使用它來加載和重新加載你的HTML的一小部分作爲一個div或任何其他標籤。

閱讀example,你會像你想象的那樣快速行事!

<html> 
<body> 

<script type="text/javascript"> 
function ajaxFunction() 
{ 
var xmlhttp; 
if (window.XMLHttpRequest) 
    { 
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else if (window.ActiveXObject) 
    { 
    // code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
else 
    { 
    alert("Your browser does not support XMLHTTP!"); 
    } 
xmlhttp.onreadystatechange=function() 
{ 
if(xmlhttp.readyState==4) 
    { 
    document.myForm.time.value=xmlhttp.responseText; 
    } 
} 
xmlhttp.open("GET","time.asp",true); 
xmlhttp.send(null); 
} 
</script> 

<form name="myForm"> 
Name: <input type="text" name="username" onkeyup="ajaxFunction();" /> 
Time: <input type="text" name="time" /> 
</form> 

</body> 
</html> 
+1

儘管名稱AJAX不需要XML,但字/首字母縮寫AJ中的X代表XML,因爲歷史上它是服務器和客戶端之間進行通信的方式。 – enguerran 2009-10-02 15:50:24

109

如果你是完全新的AJAX(代表異步JavaScript和XML),維基百科的AJAX項是一個很好的起點:

就像DHTML和LAMP,AJAX不是技術本身,而是一組技術。 AJAX使用以下組合:

  • 用於標記的HTML和CSS和 樣式信息。
  • 使用JavaScript訪問DOM 至 動態顯示並與 交互提供的信息。
  • 方法 用於在瀏覽器和服務器之間異步交換數據 ,因此 可避免頁面重新加載。 XMLHttpRequest(XHR)對象通常使用 ,但有時會使用iframe對象 或動態添加的標籤 來代替。
  • 發送到瀏覽器的數據格式爲 。常見格式 包括XML,預格式化的HTML,純文本和JavaScript對象表示法 (JSON)。這些數據可以通過某種形式的 服務器端腳本動態創建 。

正如你所看到的,從純技術角度,有沒有什麼新來的。大部分AJAX部件已經在1994年(1999年爲XMLHttpRequest對象)。真正的新穎之處在於,將這些部分放在一起與谷歌對GMail(2004)和谷歌地圖(2005)所做的一樣。實際上,這兩個網站都對AJAX的推廣作出了重大貢獻。

甲圖像是千言萬語,示出在客戶機和遠程服務器之間的通信的圖的下方,以及經典和AJAX供電的應用之間的差異:

alt text

對於橙色部分,您可以手動(使用XMLHttpRequest對象)完成所有操作,也可以使用着名的JavaScript庫(如jQuery,Prototype,YUI等)來「AJAXify」客戶端的應用程序。這樣的庫旨在隱藏JavaScript開發的複雜性(例如跨瀏覽器兼容性),但對於一個簡單的功能可能是過度的。在服務器端,一些框架也可以提供幫助(例如,如果您使用的是Java,請使用DWRRAJAX),但是您只需要公開一個服務,該服務僅返回所需的信息以部分更新頁面(最初是XML/XHTML - AJAX中的X--但現在通常首選JSON)。

1

如果你有興趣,IBM有10(可能更多)部分關於Ajax系列:(!即使你只是閱讀第一部分)Mastering Ajax part 1

雖然幾年的歷史,現在它是一個很好的介紹,

我覺得整個系列應列出Here,雖然網站是目前正在對我來說有點慢......

摘要:

由HTML,JavaScript™技術,DHTML和DOM組成的Ajax是一種傑出的方法,可幫助您將笨拙的Web界面轉換爲交互式Ajax應用程序。作者,一位Ajax專家,演示了這些技術如何協同工作 - 從概述到詳細的外觀 - 使極其高效的Web開發變得簡單實際。他還揭示了Ajax的核心概念,包括XMLHttpRequest對象。