AJAX如何工作?
AJAX的精髓是什么? 例如,我想在我的页面上有一个链接,当用户点击这个链接时,一些信息被发送到我的服务器,而无需重新加载当前页面。 那是AJAX?
我能够通过使用isoframe获得此行为。 在更多的细节,我把一个链接(让我们说一个小图像)在一个小的isoframe。 当用户单击此链接时,浏览器仅重新加载isoframe中的页面。
不过,我认为这不是一个达到目标的优雅方式。 我想我必须使用AJAX。 它是如何工作的? XHTML的使用能否以优雅的方式解决所考虑的问题? 或者我需要使用JavaScript?
我不需要太多。 我只是想有一个小的链接(点击后)发送一些信息到服务器。 假设我在消息附近有一个“星形图像”。 如果用户点击星星(他/她喜欢这个消息),星星会改变颜色和我的服务器更新数据库(记住用户喜欢这个消息)。
如果您完全不熟悉AJAX(代表asynchronousJavaScript和XML),那么wikipedia上的AJAX条目是一个很好的起点:
像DHTML和LAMP一样,AJAX本身并不是一项技术,而是一组技术。 AJAX使用以下组合:
- HTML和CSS标记和样式信息。
- 使用JavaScript访问的DOMdynamic显示和交互所呈现的信息。
- 浏览器和服务器之间asynchronous交换数据的方法,从而避免页面重新加载。 通常使用XMLHttpRequest(XHR)对象,但有时会使用IFrame对象或dynamic添加的标记。
- 发送到浏览器的数据的格式。 常见的格式包括XML,预格式化的HTML,纯文本和JavaScript对象表示法(JSON)。 这些数据可以通过某种forms的服务器端脚本dynamic创build。
正如你所看到的,从纯技术的angular度来看,这里没有什么新东西。 大部分的AJAX部件已经在1994年(1999年为XMLHttpRequest
对象)。 真正的新颖之处在于像谷歌(Google)(2004)和谷歌地图(2005)一样使用这些部分。 实际上,这两个网站都对AJAX的推广作出了重大贡献。
一张图片胜过千言万语,下面的图表说明了客户端和远程服务器之间的通信,以及经典和AJAX驱动的应用程序之间的区别:
对于橙色部分,您可以手动(使用XMLHttpRequest
对象)执行所有操作,也可以使用jQuery , Prototype , YUI等着名的JavaScript库来“AJAXify”应用程序的客户端。 这样的库旨在隐藏JavaScript开发的复杂性(例如跨浏览器兼容性),但对于一个简单的function可能是过度的。
在服务器端,一些框架也可以提供帮助(例如,如果您使用的是Java,则使用DWR或RAJAX ),但是您只需要公开一个服务,该服务仅返回所需的信息以部分更新页面(最初是XML / XHTML – AJAX中的X – 但是现在通常首选JSON )。
AJAX通常涉及从客户端发送HTTP请求到服务器,并处理服务器的响应,而不重新加载整个页面。 (asynchronous)。
Javascript通常会提交并接收来自服务器的数据响应(传统的XML,通常是其他较不详细的格式,如JSON)
然后,Javascript可以dynamic更新页面DOM以更新用户的视图。
因此“asynchronousJavaScript和XML”。
还有其他一些选项可以在不重新加载页面的情况下更新用户的视图,比如Flash和Applets,但是这些对于您的情况听起来并不是很好的解决scheme。 听起来像Javascript是要走的路。 有很多好的库支持,就像本站使用的jQuery一样,所以你不需要自己写更多的Javascript。
AJAX的本质是这样的:
您的页面可以浏览网页并在用户做其他事情时更新他们自己的内容 。
也就是说,你的javascript可以发送asynchronousGET和POST请求(通常通过XMLHttpRequest
对象),然后使用这些请求的结果来修改其页面(通过文档对象模型操作)。
Ajax不仅仅是重新加载页面的一部分。 Ajax代表asynchronousJavaScript和Xml。
您需要的Ajax的唯一部分是来自javascript的XMLHttpRequest对象。 你必须使用它来加载和重新加载一小部分的HTML作为一个div或任何其他标签。
阅读这个例子 ,你会更快地按照你的想法行事!
<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>
AJAX代表asynchronousJavascript和XML。 AJAX支持页面的部分更新,而不必将整个页面发回服务器。
AJAX有很多选项。 最值得注意的两个(可以说是)是微软的ASP.NET AJAX(以前称为Atlas)和jQuery。
如果您已经熟悉ASP.NET,那么ASP.NET AJAX相对容易设置。 如果你已经知道javascript,jQuery是很好的,并且可以非常精确地控制页面的查询和更新。
HTH
那是ajax。 你不能使用没有JavaScript的Ajax。 你应该看看jQuery和原型的例子,以获得使用的想法。
你想要做的是技术上的阿贾克斯。 Ajax创buildxhtml片段事务来更新页面的各个部分。 Javascript使这些请求得到很好和整洁。
如果您有兴趣,IBM有10个(可能更多)部分系列在Ajax: 掌握Ajax第1部分
虽然现在几岁了,但这是一个很好的介绍(即使你只是读了第一部分!)
我认为整个系列应该在这里列出,尽pipe目前这个网站对我来说有点慢…
概要:
由HTML,JavaScript™技术,DHTML和DOM组成的Ajax是帮助您将笨重的Web界面转换为交互式Ajax应用程序的杰出方法。 作者是一位Ajax专家,演示了这些技术是如何协同工作的 – 从概述到详细介绍 – 使极其高效的Web开发成为现实。 他还揭示了Ajax的核心概念,包括XMLHttpRequest对象。