Adding an events instance to the OpenLayers.Request object. Register listeners for complete, success, or failure events. These events are triggered after every request is issued. Original patch from tcoulter. Changes from ahocevar, elemoine, and me. r=me (closes #1933)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@9151 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
+1
-1
@@ -79,9 +79,9 @@
|
||||
"Rico/Corner.js",
|
||||
"Rico/Color.js",
|
||||
"OpenLayers/Ajax.js",
|
||||
"OpenLayers/Events.js",
|
||||
"OpenLayers/Request.js",
|
||||
"OpenLayers/Request/XMLHttpRequest.js",
|
||||
"OpenLayers/Events.js",
|
||||
"OpenLayers/Projection.js",
|
||||
"OpenLayers/Map.js",
|
||||
"OpenLayers/Layer.js",
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
* license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
|
||||
* full text of the license. */
|
||||
|
||||
/**
|
||||
* @requires OpenLayers/Events.js
|
||||
*/
|
||||
|
||||
/**
|
||||
* Namespace: OpenLayers.Request
|
||||
* The OpenLayers.Request namespace contains convenience methods for working
|
||||
@@ -30,6 +34,25 @@ OpenLayers.Request = {
|
||||
scope: null
|
||||
},
|
||||
|
||||
/**
|
||||
* APIProperty: events
|
||||
* {<OpenLayers.Events>} An events object that handles all
|
||||
* events on the {<OpenLayers.Request>} object.
|
||||
*
|
||||
* All event listeners will receive an event object with three properties:
|
||||
* request - {<OpenLayers.Request.XMLHttpRequest>} The request object.
|
||||
* config - {Object} The config object sent to the specific request method.
|
||||
* requestUrl - {String} The request url.
|
||||
*
|
||||
* Supported event types:
|
||||
* complete - Triggered when we have a response from the request, if a
|
||||
* listener returns false, no further response processing will take
|
||||
* place.
|
||||
* success - Triggered when the HTTP response has a success code (200-299).
|
||||
* failure - Triggered when the HTTP response does not have a success code.
|
||||
*/
|
||||
events: new OpenLayers.Events(this, null, ["complete", "success", "failure"]),
|
||||
|
||||
/**
|
||||
* APIMethod: issue
|
||||
* Create a new XMLHttpRequest object, open it, set any headers, bind
|
||||
@@ -134,17 +157,35 @@ OpenLayers.Request = {
|
||||
OpenLayers.Function.bind(config.failure, config.scope) :
|
||||
config.failure;
|
||||
}
|
||||
|
||||
var events = this.events;
|
||||
|
||||
request.onreadystatechange = function() {
|
||||
if(request.readyState == OpenLayers.Request.XMLHttpRequest.DONE) {
|
||||
complete(request);
|
||||
if(success && (!request.status ||
|
||||
(request.status >= 200 && request.status < 300))) {
|
||||
success(request);
|
||||
}
|
||||
if(failure && (request.status &&
|
||||
(request.status < 200 || request.status >= 300))) {
|
||||
failure(request);
|
||||
var proceed = events.triggerEvent(
|
||||
"complete",
|
||||
{request: request, config: config, requestUrl: url}
|
||||
);
|
||||
if(proceed !== false) {
|
||||
complete(request);
|
||||
if (!request.status || (request.status >= 200 && request.status < 300)) {
|
||||
events.triggerEvent(
|
||||
"success",
|
||||
{request: request, config: config, requestUrl: url}
|
||||
);
|
||||
if(success) {
|
||||
success(request);
|
||||
}
|
||||
}
|
||||
if(request.status && (request.status < 200 || request.status >= 300)) {
|
||||
events.triggerEvent(
|
||||
"failure",
|
||||
{request: request, config: config, requestUrl: url}
|
||||
);
|
||||
if(failure) {
|
||||
failure(request);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user