AJAX如何工作?

时间:2009-10-02 14:51:58

标签: javascript ajax

AJAX的本质是什么?例如,我希望在我的页面上有一个链接,以便当用户单击此链接时,一些信息将被发送到我的服务器,而无需重新加载当前页面。那是AJAX吗?

我可以通过使用isoframes来获得此行为。在更多细节中,我在一个小的isoframe中放了一个链接(比如一个小图片)。当用户单击此链接时,浏览器仅重新加载isoframe中的页面。

但是,我认为这不是达到目标的优雅方式。我想我必须使用AJAX。它是如何工作的?可以使用XHTML以优雅的方式解决所考虑的问题吗?或者我需要使用JavaScripts吗?

我不需要太多。我只想要一个小的链接(点击后)发送一些信息到服务器。假设我在消息附近有一个“星形图像”。如果用户点击星标(他/她喜欢该消息),则更改颜色和我的服务器更新数据库(以记住该用户喜欢该消息)。

8 个答案:

答案 0 :(得分:117)

如果您对AJAX(代表异步Javascript和XML)完全陌生,维基百科上的AJAX条目是一个很好的起点:

  

与DHTML和LAMP一样,AJAX本身并不是一项技术,而是一组技术。 AJAX使用以下组合:

     
      
  • HTML和CSS用于标记和   造型信息。
  •   
  • DOM   用JavaScript访问   动态显示和交互   提供的信息。
  •   
  • 一种方法   用于异步交换数据   因此,在浏览器和服务器之间   避免页面重新加载。该   XMLHttpRequest(XHR)对象通常是   使用过,但有时候是IFrame对象   或动态添加的标签   反而用了。
  •   
  • 数据的格式   发送到浏览器。常见格式   包括XML,预格式化的HTML,简单   文本和JavaScript对象表示法   (JSON)。可以创建此数据   动态地通过某种形式   服务器端脚本。
  •   

正如您所看到的,从纯粹的技术角度来看,这里没有什么新东西。大多数AJAX部分已于1994年出现(1999年为XMLHttpRequest对象)。真正新奇的是像谷歌一样使用GMail(2004)和谷歌地图(2005),将这些部分一起使用。实际上,两个网站都对推广AJAX做出了巨大贡献。

图片胜过千言万语,下图说明了客户端与远程服务器之间的通信,以及经典和AJAX驱动的应用程序之间的差异:

alt text

对于橙色部分,您可以手动完成所有操作(使用XMLHttpRequest对象),也可以使用着名的JavaScript库,如jQueryPrototypeYUI,等“AJAXify”应用程序的客户端。这些库旨在隐藏JavaScript开发的复杂性(例如跨浏览器兼容性),但对于一个简单的功能可能有点过分。

在服务器端,一些框架也可以提供帮助(例如DWRRAJAX如果您使用的是Java),但您需要做的只是公开一个只返回部分更新页面所需的信息(最初为XML / XHTML - AJAX中的X - 但JSON现在通常更受欢迎。)

答案 1 :(得分:17)

AJAX通常涉及从客户端向服务器发送HTTP请求并处理服务器的响应,而无需重新加载整个页面。 (异步地)。

Javascript通常会提交并从服务器接收数据响应(传统的XML,通常是其他不那么冗长的格式,如JSON)

然后,Javascript可以动态更新页面DOM以更新用户的视图。

因此'异步Javascript和XML'。

还有其他选项可以在不重新加载页面的情况下更新用户的视图,例如Flash和Applet,但这些对您的案例来说听起来不是很好的解决方案。听起来像Javascript是要走的路。周围有很多好的库支持,例如本网站上使用的jQuery,所以你不需要自己编写很多Javascript。

答案 2 :(得分:17)

AJAX的本质是:

您的网页可以浏览网页并更新自己的内容 用户正在做其他事情

也就是说,您的javascript可以发送异步GET和POST请求(通常通过XMLHttpRequest对象)然后使用这些请求的结果来修改其页面(通过Document Object Model操作)。

答案 3 :(得分: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>

答案 4 :(得分:5)

AJAX代表异步Javascript和XML。 AJAX支持对页面进行部分更新,而无需将整个页面发布回服务器。

AJAX有很多选择。最值得注意的两个(可以说是)微软的ASP.NET AJAX(以前的Atlas)和jQuery。

如果您已熟悉ASP.NET,ASP.NET AJAX相对容易设置。如果您已经了解javascript,jQuery很好,并且可以非常精细地控制页面的查询和更新。

HTH

答案 5 :(得分:2)

如果您有兴趣,IBM有关于Ajax的10个(可能更多)部分系列:Mastering Ajax part 1

虽然现在好几年了,但这是一个很好的介绍,(即使你只是阅读了第一部分!)

我认为应该列出整个系列Here,虽然该网站目前对我来说有点慢......

<强>要点:

  

Ajax由HTML,JavaScript™技术,DHTML和DOM组成,是一种出色的方法,可帮助您将笨重的Web界面转换为交互式Ajax应用程序。作者是Ajax专家,演示了这些技术如何协同工作 - 从概述到详细外观 - 使高效的Web开发变得简单易行。他还揭示了Ajax的核心概念,包括XMLHttpRequest对象。

答案 6 :(得分:1)

那是ajax。没有javascript你不能使用ajax。你应该看一下jquery和prototype示例来了解用法。

答案 7 :(得分:0)

你要做的是技术上的ajax。 Ajax创建xhtml片段事务以更新页面的各个部分。 Javascript使得这些请求变得更好,更整洁。