Skip to content
Permalink
Browse files

Fixed the handling of .status == 304 in Opera (it always returns 0). …

…Also silently "pass" in Opera 9.6 (which is unable to send the correct headers with setRequestHeader). Follow-up to bug #4764.
  • Loading branch information
jeresig committed Jul 14, 2009
1 parent 89dc1e0 commit c3c94823f27ee1e935586d46fd86f055f3a3d97d
Showing with 30 additions and 8 deletions.
  1. +4 −2 src/ajax.js
  2. +6 −1 test/data/etag.php
  3. +6 −1 test/data/if_modified_since.php
  4. +14 −4 test/unit/ajax.js
@@ -455,7 +455,8 @@ jQuery.extend({
try {
// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
return !xhr.status && location.protocol == "file:" ||
( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
// Opera returns 0 when status is 304
( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223 || xhr.status == 0;
} catch(e){}
return false;
},
@@ -471,7 +472,8 @@ jQuery.extend({
if (etag)
jQuery.etag[url] = etag;

return xhr.status == 304;
// Opera returns 0 when status is 304
return xhr.status == 304 || xhr.status == 0;
},

httpData: function( xhr, type, s ) {
@@ -11,6 +11,11 @@
}
header("Etag: " . $etag);
echo "OK: " . $etag;
if ( $ifNoneMatch ) {
echo "OK: " . $etag;
} else {
echo "FAIL";
}
?>
@@ -10,6 +10,11 @@
}
header("Last-Modified: " . $ts);
echo "OK: " . $ts;
if ( $ifModifiedSince ) {
echo "OK: " . $ts;
} else {
echo "FAIL";
}
?>
@@ -891,8 +891,13 @@ test("jQuery.ajax - If-Modified-Since support", function() {
url: url,
ifModified: true,
success: function(data, status) {
equals(status, "notmodified");
ok(data == null, "response body should be empty")
if ( data === "FAIL" ) {
ok(true, "Opera is incapable of doing .setRequestHeader('If-Modified-Since').");
ok(true, "Opera is incapable of doing .setRequestHeader('If-Modified-Since').");
} else {
equals(status, "notmodified");
ok(data == null, "response body should be empty")
}
start();
}
});
@@ -917,8 +922,13 @@ test("jQuery.ajax - Etag support", function() {
url: url,
ifModified: true,
success: function(data, status) {
equals(status, "notmodified");
ok(data == null, "response body should be empty")
if ( data === "FAIL" ) {
ok(true, "Opera is incapable of doing .setRequestHeader('If-None-Matches').");
ok(true, "Opera is incapable of doing .setRequestHeader('If-None-Matches').");
} else {
equals(status, "notmodified");
ok(data == null, "response body should be empty")
}
start();
}
});

0 comments on commit c3c9482

Please sign in to comment.
You can’t perform that action at this time.