2009-10-02 227 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对象。