diff --git a/lib/OpenLayers/Request.js b/lib/OpenLayers/Request.js index f348d34008..74068bc156 100644 --- a/lib/OpenLayers/Request.js +++ b/lib/OpenLayers/Request.js @@ -123,10 +123,12 @@ OpenLayers.Request = { request.onreadystatechange = function() { if(request.readyState == OpenLayers.Request.XMLHttpRequest.DONE) { complete(request); - if(success && request.status >= 200 && request.status < 300) { + if(success && (!request.status || + (request.status >= 200 && request.status < 300))) { success(request); } - if(failure && (request.status < 200 || request.status >= 300)) { + if(failure && (request.status && + (request.status < 200 || request.status >= 300))) { failure(request); } } diff --git a/tests/Request.html b/tests/Request.html index c2831e59cd..28484d2406 100644 --- a/tests/Request.html +++ b/tests/Request.html @@ -20,7 +20,7 @@ function test_issue(t) { setup(); - t.plan(18); + t.plan(19); var request, config; var proto = OpenLayers.Request.XMLHttpRequest.prototype; var issue = OpenLayers.Function.bind(OpenLayers.Request.issue, @@ -111,11 +111,11 @@ config = { success: function(req) { - t.ok(req.status >= 200 && req.status < 300, + t.ok(!req.status || (req.status >= 200 && req.status < 300), "success callback called with " + req.status + " status"); }, failure: function(req) { - t.ok(req.status < 200 || req.status >= 300, + t.ok(req.status && (req.status < 200 || req.status >= 300), "failure callback called with " + req.status + " status"); } }; @@ -137,6 +137,10 @@ // mock up status 300 (1 test) request.status = 300; request.onreadystatechange(); + + // mock up a status null (1 test) + request.status = null; + request.onreadystatechange(); proto.send = _send;