(Paper) AJAX Interview Questions And Answers Set -4
Ajax Interview Questions And Answers Set - 4
How do I
send an image using AJAX?
While it may appear that images are being sent when using AJAX with an
application like Google Maps what is really happening is that the URLs of images
are being send as the response of an AJAX request and those URLs are being set
using DHTML.
In this example an XML document is returned from an AJAX interaction and the
category bar is populated.
<categories>
<category>
<cat-id>1</cat-id>
<name>Books</name>
<description>Fun to read</description>
<image-url>books_icon.gif</image-url>
</category>
<category>
<cat-id>2</cat-id>
<name>Electronics</name>
<description>Must have gadgets</description>
<image-url>electronics.gif</image-url>
</category>
</categories>
Notice that the image-url element contains the location of the URL for the image
representing a category. The callback method of an AJAX interaction will parse
the response XML document and call the addCategory function for each category
included in the response XML document. The addCategory function looks up a table
row element "categoryTable" in body of the page and adds a row to the
element which contains the image.
<scrip type="text/javascript" >
...
function addCategory(id, name, imageSrc) {
var categoryTable = document.getElementById("categoryTable");
var row = document.createElement("tr");
var catCell = document.createElement("td");
var img = document.createElement("img");
img.src = ("images\\" + imageSrc);
var link = document.createElement("a");
link.className ="category";
link.appendChild(document.createTextNode(name));
link.setAttribute("onclick", "catalog?command=category&catid="
+ id);
catCell.appendChild(img);
catCell.appendChild(link);
row.appendChild(catCell);
categoryTable.appendChild(row);
}
</script>
...
<table>
<tr>
<td width="300" bgoclor="lightGray">
<table id="categoryTable" border="0" cellpadding="0"></table>
</td>
<td id="body" width="100%">Body Here</td>
</tr>
</table>
Note that the source of the image is set to the image source. The image is
loaded by a subsequent HTTP request for the image at the URL "images/books_icon.gif"
or "images/electronic_icon.gif" that occurs when the img element is
added to the categoryTable.
Will
HTML_AJAX integrate with other Javascript AJAX libraries such as scriptaculous ?
How would this integration look like?
HTML_AJAX doesn't have specific plans to integrate with other JavaScript
libraries. Part of this is because external dependencies make for a more
complicated installation process. It might make sense to offer some optional
dependencies on a library like scriptaculous automatically using its visual
effects for the loading box or something, but there isn't a lot to gain from
making default visuals like that flashier since they are designed to be easily
replaceable.
Most integration would take place in higher level components. Its unclear
whether higher level components like that should be part of HTML_AJAX delivered
through PEAR or if they should just be supported by HTML_AJAX and made available
from http://htmlajax.org or some other site. If your interested in building
widgets or components based on HTML_AJAX please let me know.
HTML_AJAX does however offer the ability to use its library loading mechanism
with any JavaScript library. I use scriptaculous in conjunction with HTML_AJAX
and I load both libraries through the server.
To do this you just need to register the library with your server and load add
its flag to your include line.
<?php
$this->server->registerJSLibrary('scriptaculous',
array('prototype.js','scriptaculous.js','builder.js','effects.js','dragdrop.js','controls.js','slider.js'),
'/pathto/scriptaculous/');?>
<script type="text/javascrpt" src="server.php?client=scriptaculous"></script>
When should I
use an Java applet instead of AJAX?
Applets provide a rich experience on
the client side and there are many things they can do that an AJAX application
cannot do, such as custom data streaming, graphic manipulation, threading, and
advanced GUIs. While DHTML with the use of AJAX has been able to push the
boundaries on what you can do on the client, there are some things that it just
cannot do. The reason AJAX is so popular is that it only requires functionality
built into the browser (namely DHTML and AJAX capabilities). The user does not
need to download and/or configure plugins. It is easy to incrementally update
functionality and know that that functionality will readily available, and there
are not any complicated deployment issues. That said, AJAX-based functionality
does need to take browser differences into consideration. This is why we
recommend using a JavaScript library such as Dojo which abstracts browser
differences. So the "bottom line" is: If you are creating advanced UIs
where you need more advanced features on the client where you want UI accuracy
down to the pixel, to do complex computations on the client, use specialized
networking techniques, and where you know that the applet plugin is available
for your target audience, applets are the way to go. AJAX/DHTML works well for
applications where you know the users are using the latest generation of
browsers, where DHTML/AJAX "good enough" for you, and where your
developers have JavaScript/DHTML/AJAX skills. Many amazing things can be done
with AJAX/DHTML but there are limitations. AJAX and applets can be used together
in the same UIs with AJAX providing the basic structure and applets providing
more advanced functionality. The Java can communicate to JavaScript using the
Live-Connect APIs. The question should not be should framed as do I use AJAX or
applets, but rather which technology makes the best sense for what you are
doing. AJAX and applets do not have to be mutually exclusive.
What
kinds of applications is Ajax best suited for?
We don?t know yet. Because this is a relatively new approach, our
understanding of where Ajax can best be applied is still in its infancy.
Sometimes the traditional web application model is the most appropriate solution
to a problem.
Does this
mean Adaptive Path is anti-Flash?
Not at all. Macromedia is an Adaptive Path client, and we?ve long been
supporters of Flash technology. As Ajax matures, we expect that sometimes Ajax
will be the better solution to a particular problem, and sometimes Flash will be
the better solution. We?re also interested in exploring ways the technologies
can be mixed (as in the case of Flickr, which uses both).
Where
can I find examples of AJAX?
While components of AJAX have been around for some
time (for instance, 1999 for XMLHttpRequest), it really didn't become that
popular until Google took...
What is the
XMLHttpRequest object?
It offers a non-blocking way for JavaScript to communicate back to the web
server to update only part of the web page.
Does Ajax have
significant accessibility or browser compatibility limitations? Do Ajax
applications break the back button? Is Ajax compatible with REST? Are there
security considerations with Ajax development? Can Ajax applications be made to
work for users who have JavaScript turned off?
The answer to all of these questions is ?maybe?. Many developers are already
working on ways to address these concerns. We think there?s more work to be
done to determine all the limitations of Ajax, and we expect the Ajax
development community to uncover more issues like these along the way.
How do I access
data from other domains to create a mashup with Java?
From your JavaScript clients you can access data in other domains if the return
data is provide in JSON format. In essence you can create a JavaScript client
that runs operates using data from a different server. This technique is know as
JSON with Padding or JSONP. There are questions as to whether this method is
secure as you are retrieving data from outside your domain and allowing it to be
excuted in the context of your domain. Not all data from third parties is
accessible as JSON and in some cases you may want an extra level of protection.
With Java you can provide a proxy to third party services using a web component
such as a servlet. This proxy can manage the communication with a third party
service and provide the data to your clients in a format of your choosing. You
can also cache data at your proxy and reduce trips to service. For more on using
a Java proxy to create mashups see The XmlHttpProxy Client for Java.
Does Java have
support for Comet style server-side push?
Current AJAX applications use polling to communicate changes data between the
server and client. Some applications, such as chat applications, stock tickers,
or score boards require more immediate notifications of updates to the client.
Comet is an event based low latency server side push for AJAX applications.
Comet communication keeps one of the two connections available to the browser
open to continously communicate events from the server to the client. A Java
based solution for Comet is being developed for Glassfish on top of the Grizzly
HTTP connector. See Enabling Grizzly by Jean-Francois Arcand for more details.
How do I create a
thread to do AJAX polling?
JavaScript does not have threads. JavaScript functions are called when an event
happens in a page such as the page is loaded, a mouse click, or a form element
gains focus. You can create a timer using the setTimeout which takes a function
name and time in milliseconds as arguments. You can then loop by calling the
same function as can be seen in the JavaScript example below.
function checkForMessage() {
// start AJAX interaction with processCallback as the callback function
}
// callback for the request
function processCallback() {
// do post processing
setTimeout("checkForMessage()", 10000);
}
Notice that the checkForMessage will continue to loop indefinitely. You may want
to vary the increment the interval based on activity in the page or your use
cases. You may also choose to have logic that would break out of the loop based
on some AJAX response processing condition.
Is the XMLHttpRequest
object part of a W3C standard?
No. Or not yet. It is part of the DOM Level 3 Load and Save Specification
proposal.

Daily JOBS






Get Your Dream Job! Post Your Resume Today!
Get Your Dream Job! Post Your Resume Today!