Skip to content

Commit

Permalink
Fixed the handling of .status == 304 in Opera (it always returns 0). …
Browse files Browse the repository at this point in the history
…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 c3c9482
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 8 deletions.
6 changes: 4 additions & 2 deletions src/ajax.js
Expand Up @@ -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;
},
Expand All @@ -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 ) {
Expand Down
7 changes: 6 additions & 1 deletion test/data/etag.php
Expand Up @@ -11,6 +11,11 @@
}

header("Etag: " . $etag);
echo "OK: " . $etag;

if ( $ifNoneMatch ) {
echo "OK: " . $etag;
} else {
echo "FAIL";
}

?>
7 changes: 6 additions & 1 deletion test/data/if_modified_since.php
Expand Up @@ -10,6 +10,11 @@
}

header("Last-Modified: " . $ts);
echo "OK: " . $ts;

if ( $ifModifiedSince ) {
echo "OK: " . $ts;
} else {
echo "FAIL";
}

?>
18 changes: 14 additions & 4 deletions test/unit/ajax.js
Expand Up @@ -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();
}
});
Expand All @@ -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();
}
});
Expand Down

0 comments on commit c3c9482

Please sign in to comment.