Due to the differences between browser implementations of XMLHttpRequest
, it’s necessary to create a
special function in order to ensure that your code will work on all major
browsers.
To do this, you must understand the three ways of creating an
XMLHttpRequest
object:
IE 5: request = new
ActiveXObject("Microsoft.XMLHTTP")
IE 6+: request = new
ActiveXObject("Msxml2.XMLHTTP")
All others: request = new
XMLHttpRequest()
This is the case because Microsoft chose to implement a change with the release of Internet Explorer 6, while all other browsers use a slightly different method. Therefore, the code in Example 17-1 will work for all major browsers released over the last few years.
<script> function ajaxRequest() { try// Non-IE browser?
{ var request = new XMLHttpRequest() } catch(e1) { try// IE 6+?
{ request = new ActiveXObject("Msxml2.XMLHTTP") } catch(e2) { try// IE 5?
{ request = new ActiveXObject("Microsoft.XMLHTTP") } catch(e3)// There is no Ajax support
{ request = false } } } return request } </script>
You may remember the introduction to error handling in the previous
chapter, using the try...catch
construct. Example 17-1 is a perfect
illustration of its utility: it uses the try
keyword to execute the non-IE Ajax command
and, upon success, jumps on to the final return
statement, where the new object is
returned. If, however, the command fails, a catch
traps the error and the subsequent command
is executed. Again, upon success, the new object is returned; otherwise,
the final of the three commands is tried. If that attempt fails, the
browser doesn’t support Ajax and the request
object is set to false
; otherwise, the object is returned. So
there you have it—a cross-browser Ajax request function that you may wish
to add to your library of useful JavaScript functions.
Okay, so now you have a means of creating an XMLHttpRequest
object, but what can you do with
these objects? Well, each one comes with a set of properties (variables)
and methods (functions), which are detailed in Table 17-1 and Table 17-2.
Properties | Description |
| Specifies an event handling
function to be called whenever the |
| An integer property that
reports on the status of a request. It can have any of these
values: |
| The data returned by the server in text format. |
| The data returned by the server in XML format. |
| The HTTP status code returned by the server. |
| The HTTP status text returned by the server. |
Methods | Description |
Aborts the current request | |
| Returns all headers as a string |
| Returns the value of
|
| Specifies the HTTP method
to use ( |
| Sends
|
| Sets a header with a parameter/value pair |
These properties and methods give you control over what data you
send to the server and receive back, as well as a choice of send and
receive methods. For example, you can choose whether to request plain text
(which could include HTML and other tags) or data in XML format. You can
also decide whether you wish to use the POST
or GET
method to send to the server.
Let’s look at the POST
method
first by creating a very simple pair of documents: a combination of HTML
and JavaScript, and a PHP program to interact with it via Ajax. Hopefully
you’ll enjoy these examples, because they illustrate just what Web 2.0 and
Ajax are all about. With a few lines of JavaScript, they request a web
document from a third-party web server, which is then returned to the
browser by your server and placed within a section of the current
document.