Is the server or the client in control?
It depends. With AJAX the answer is more in between.
Control can be more centralized in a server-side
component or as a mix of client-side and server-side
controllers.
* Centralized server-side controller - When having a
more centralized controller the key is to make sure the
data in client-side page is in sync with that of the
server. Some applications may keep all the state on the
server and push all updates to client DOM via a simple
JavaScript controller.
* Client and server-side controllers - This architecture
would use JavaScript to do all presentation related
control, event processing, page manipulation, and
rendering of model data on the client. The server-side
would be responsible for things such as business logic
and pushing updated model data to the client. In this
case the server would not have intimate knowledge of the
presentation short of the initial page that would be
sent to the client page request.
There are some use cases where an entire AJAX
application can be written in a single page. Keep in
mind if you choose this type of architecture that
navigation and bookmarking should be considered.
Both methods are viable depending on what you are trying
to accomplish. I tend to prefer spreading the control
across the client and server.
Is Ajax just another name for XMLHttpRequest?
No. XMLHttpRequest is only part of the Ajax equation.
XMLHttpRequest is the technical component that makes the
asynchronous server communication possible; Ajax is our
name for the overall approach described in the article,
which relies not only on XMLHttpRequest, but on CSS,
DOM, and other technologies.
How do I abort the current XMLHttpRequest?
Just call the abort() method on the request.
What is the minimum version of PHP that needs to be
running in order to use HTML_AJAX?
The oldest PHP version i've fully tested HTML_AJAX is
4.3.11, but it should run on 4.2.0 without any problems.
(Testing reports from PHP versions older then 4.3.11
would be appreciated.)
Why does HTML_AJAX hang on some server installs
If you run into an HTML_AJAX problem only on some
servers, chances are your running into a problem with
output compression. If the output compression is handled
in the PHP config we detect that and do the right thing,
but if its done from an apache extension we have no way
of knowing its going to compress the body. Some times
setting HTML_AJAX::sendContentLength to false fixes the
problem, but in other cases you'll need to disabled the
extension for the AJAX pages.
I've also seen problems caused by debugging extensions
like XDebug, disabling the extension on the server page
usually fixes that. Questions dealing with Using
HTML_AJAX, and general JavaScript development
How do I get the XMLHttpRequest object?
Depending upon the browser... if (window.ActiveXObject)
{ // Internet Explorer http_request = new
ActiveXObject("Microsoft.XMLHTTP"); } else if...
Are there any security issues with AJAX?
JavaScript is in plain view to the user with by
selecting view source of the page. JavaScript can not
access the local filesystem without the user's
permission. An AJAX interaction can only be made with
the servers-side component from which the page was
loaded. A proxy pattern could be used for AJAX
interactions with external services.
You need to be careful not to expose your application
model in such as way that your server-side components
are at risk if a nefarious user to reverse engineer your
application. As with any other web application, consider
using HTTPS to secure the connection when confidential
information is being exchanged.
What about applets and plugins ?
Don't be too quick to dump your plugin or applet based
portions of your application. While AJAX and DHTML can
do drag and drop and other advanced user interfaces
there still limitations especially when it comes to
browser support. Plugins and applets have been around
for a while and have been able to make AJAX like
requests for years. Applets provide a great set of UI
components and APIs that provide developers literally
anything.
Many people disregard applets or plugins because there
is a startup time to initialize the plugin and there is
no guarantee that the needed version of a plugin of JVM
is installed. Plugins and applets may not be as capable
of manipulating the page DOM. If you are in a uniform
environment or can depend on a specific JVM or plugin
version being available (such as in a corporate
environment) a plugin or applet solution is great.
One thing to consider is a mix of AJAX and applets or
plugins. Flickr uses a combination of AJAX interactions/DHTML
for labeling pictures and user interaction and a plugin
for manipulating photos and photo sets to provide a
great user experience. If you design your server-side
components well they can talk to both types of clients.
Why did you feel the need to give this a name?
I needed something shorter than “Asynchronous
JavaScript+CSS+DOM+XMLHttpRequest” to use when
discussing this approach with clients.
Is AJAX code cross browser compatible?
Not totally. Most browsers offer a native XMLHttpRequest
JavaScript object, while another one (Internet Explorer)
require you to get it as an ActiveX object....
Techniques for asynchronous server communication have
been around for years. What makes Ajax a “new” approach?
What’s new is the prominent use of these techniques in
real-world applications to change the fundamental
interaction model of the Web. Ajax is taking hold now
because these technologies and the industry’s
understanding of how to deploy them most effectively
have taken time to develop.
Is Ajax a technology platform or is it an architectural
style?
It’s both. Ajax is a set of technologies being used
together in a particular way.