2
// -----------------------------------------------------------------------------
3
// Author: Torgeir Lorange Ostby, torgeilo@gmail.com
4
// Version: $Id: request.js 2644 2007-01-03 13:24:56Z torgeilo $
5
// -----------------------------------------------------------------------------
10
* function processResponse( response ) { ... } // Text or XML
11
* function requestFailed( httpStatusCode ) { ... }
13
* var request = new Request();
14
* request.setResponseTypeXML( 'rootElement' ); // Optional
15
* request.sendAsPost( 'value=1&value=2' ); // Optional
16
* request.setCallbackSuccess( processResponse ); // Optional
17
* request.setCallbackError( requestFailed ); // Optional
18
* request.send( 'url.action?value=1' );
24
var responseType = 'TEXT';
25
var requestMethod = 'GET';
26
var requestParameters = null;
31
this.setResponseTypeXML = function( rootElementName_ )
34
rootElementName = rootElementName_;
37
this.sendAsPost = function( requestParameters_ )
39
requestMethod = 'POST';
40
requestParameters = requestParameters_;
43
this.setCallbackSuccess = function( callbackSuccess_ )
45
callbackSuccess = callbackSuccess_;
48
this.setCallbackError = function( callbackError_ )
50
callbackError = callbackError_;
53
this.send = function( url )
55
request = newXMLHttpRequest();
59
window.alert( "Your browser doesn't support XMLHttpRequest" );
63
request.onreadystatechange = responseReceived;
64
request.open( requestMethod, url, true );
65
request.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
66
request.send( requestParameters );
69
function newXMLHttpRequest()
71
if ( window.XMLHttpRequest )
75
return new XMLHttpRequest();
82
else if ( window.ActiveXObject )
86
return new ActiveXObject( 'Msxml2.XMLHTTP' );
92
return new ActiveXObject( 'Microsoft.XMLHTTP' );
104
function responseReceived()
106
if ( request.readyState == 4 )
108
switch( request.status )
111
if ( callbackSuccess )
113
if ( responseType == 'TEXT' )
115
callbackSuccess( request.responseText );
119
var xml = textToXML( request.responseText, rootElementName );
121
callbackSuccess( xml );
126
if ( callbackSuccess )
128
callbackSuccess( null );
132
var message = 'Operation failed - internal server error';
134
var serverMessage = request.responseText;
140
if ( serverMessage.length > maxLength )
142
serverMessage = serverMessage.substring( 0, maxLength - 3 ) + '...';
145
if ( serverMessage.length > 0 )
147
message += '\n\n' + serverMessage;
151
message += '\n\nThe error details are logged';
153
window.alert( message );
159
callbackError( request.status );
165
function textToXML( text, rootElementName )
167
var docImpl = document.implementation;
170
// For standards compliant browsers
171
if ( docImpl && docImpl.createLSParser )
173
parser = docImpl.createLSParser( docImpl.MODE_SYNCHRONOUS, null );
174
var input = docImpl.createLSInput();
175
input.stringData = text;
176
return parser.parse( input ).documentElement;
180
else if ( window.ActiveXObject )
182
dom = new ActiveXObject( 'Microsoft.XMLDOM' );
185
return dom.getElementsByTagName( rootElementName )[0];
189
else if ( window.DOMParser )
191
parser = new DOMParser();
192
dom = parser.parseFromString( text, 'application\/xml' );
193
return dom.documentElement;
196
// No parsing abilities