AJAX 是如何工作的?

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

我能够通过使用 isoframe 得到这种行为。在更多的细节,我把一个链接(让我们说一个小图像)在一个小的同构。当用户单击这个链接时,浏览器只重新加载等帧中的页面。

然而,我认为这不是一个优雅的方式来达到目标。我想我必须使用 AJAX。它是怎么工作的?使用 XHTML 能够以一种优雅的方式解决这个问题吗?或者我需要使用 JavaScript 吗?

我不需要太多。我只是想有一个小链接,(点击后)发送一些信息到服务器。让我们说我有一个“明星形象”附近的消息。如果用户单击星号(他/她喜欢这条消息) ,星号会改变颜色,我的服务器会更新数据库(记住用户喜欢这条消息)。

89440 次浏览

that is ajax. you cannot use ajax without javascript. you should look at jquery and prototype examples to get an idea of usage.

What you are trying to do is technically ajax. Ajax creates xhtml fragment transactions to update sections of a page. Javascript makes these get requests nice and neat.

AJAX stands for Asynchronous Javascript and XML. AJAX supports partial updates to pages without having to post the entire page back to the server.

There are plenty of options for AJAX. The two most notable (arguably) are Microsoft's ASP.NET AJAX (formerly Atlas) and jQuery.

ASP.NET AJAX is relatively easy to set up if you're already familiar with ASP.NET. jQuery is good if you already know javascript, and allows very granular control over the querying and updating of your page.

HTH

AJAX typically involves sending HTTP requests from client to server and processing the server's response, without reloading the entire page. (Asynchronously).

Javascript generally does the submission and receives the data response from the server (traditionally XML, often other less verbose formats like JSON)

The Javascript then may update the page DOM dynamically to update the user's view.

Thus 'Asychronous Javascript And XML'.

There are other options to update the user's view without reloading the page, things like Flash and Applets, but these don't sound like good solutions for your case. Sounds like Javascript is the way to go. There's loads of good library support around, like jQuery as is used on this site, so you don't need to actually write much Javascript yourself.

The essence of AJAX is this:

Your pages can browse the web and update their own content while the user is doing other things.

That is, your javascript can send asynchronous GET and POST requests (usually via an XMLHttpRequest object) then use the results of those requests to modify its page (via Document Object Model manipulation).

Ajax is more than reload just a part of the page. Ajax stands for Asynchronous Javascript And Xml.

The only part of Ajax that you need is the XMLHttpRequest object from javascript. You have to use it to load and reload small part of your html as a div or any other tags.

Read that example and you will be pro sooner as you think!

<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>

If you are totally new to AJAX (which stands for Asynchronous Javascript And XML), the AJAX entry on wikipedia is a good starting point:

Like DHTML and LAMP, AJAX is not a technology in itself, but a group of technologies. AJAX uses a combination of:

  • HTML and CSS for marking up and styling information.
  • The DOM accessed with JavaScript to dynamically display and interact with the information presented.
  • A method for exchanging data asynchronously between browser and server, thereby avoiding page reloads. The XMLHttpRequest (XHR) object is usually used, but sometimes an IFrame object or a dynamically added tag is used instead.
  • A format for the data sent to the browser. Common formats include XML, pre-formatted HTML, plain text, and JavaScript Object Notation (JSON). This data could be created dynamically by some form of server-side scripting.

As you can see, from a pure technological point of view, there is nothing really new here. Most of AJAX parts were already there in 1994 (1999 for the XMLHttpRequest object). The real novelty was to use these parts together as Google did with GMail (2004) and Google Maps (2005). Actually, both sites contributed heavily to the promotion of AJAX.

A picture being worth a thousand words, below a diagram that illustrates the communication between the client and the remote server, as well as the differences between the classic and the AJAX-powered applications:

alt text

For the orange part, you can do everything by hand (with the XMLHttpRequest object) or you can use famous JavaScript libraries like jQuery, Prototype, YUI, etc to "AJAXify" the client-side of your application. Such libraries aim to hide the complexity of JavaScript development (e.g. the cross-browser compatibility), but might be overkill for a simple feature.

On the server-side, some frameworks can help too (e.g. DWR or RAJAX if you are using Java), but all you need to do is basically to expose a service that returns only the required informations to partially update the page (initially as XML/XHTML - the X in AJAX - but JSON is often preferred nowadays).

If you're interested, IBM have a 10 (possibly more) part series on Ajax: Mastering Ajax part 1

Although a few years old now it's a good intro, (even if you just read the first part!)

I think the whole series should be listed Here, although the site's being a bit slow for me at the moment...

Summary:

Ajax, which consists of HTML, JavaScript™ technology, DHTML, and DOM, is an outstanding approach that helps you transform clunky Web interfaces into interactive Ajax applications. The author, an Ajax expert, demonstrates how these technologies work together -- from an overview to a detailed look -- to make extremely efficient Web development an easy reality. He also unveils the central concepts of Ajax, including the XMLHttpRequest object.