AJAX的本质是什么?例如,我希望在我的页面上有一个链接,以便当用户单击此链接时,一些信息将被发送到我的服务器,而无需重新加载当前页面。那是AJAX吗?
我可以通过使用isoframes来获得此行为。在更多细节中,我在一个小的isoframe中放了一个链接(比如一个小图片)。当用户单击此链接时,浏览器仅重新加载isoframe中的页面。
但是,我认为这不是达到目标的优雅方式。我想我必须使用AJAX。它是如何工作的?可以使用XHTML以优雅的方式解决所考虑的问题吗?或者我需要使用JavaScripts吗?
我不需要太多。我只想要一个小的链接(点击后)发送一些信息到服务器。假设我在消息附近有一个“星形图像”。如果用户点击星标(他/她喜欢该消息),则更改颜色和我的服务器更新数据库(以记住该用户喜欢该消息)。
答案 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驱动的应用程序之间的差异:
对于橙色部分,您可以手动完成所有操作(使用XMLHttpRequest
对象),也可以使用着名的JavaScript库,如jQuery,Prototype,YUI,等“AJAXify”应用程序的客户端。这些库旨在隐藏JavaScript开发的复杂性(例如跨浏览器兼容性),但对于一个简单的功能可能有点过分。
在服务器端,一些框架也可以提供帮助(例如DWR或RAJAX如果您使用的是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使得这些请求变得更好,更整洁。