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.
This commit is contained in:
parent
89dc1e0143
commit
c3c94823f2
4 changed files with 30 additions and 8 deletions
|
@ -455,7 +455,8 @@ jQuery.extend({
|
||||||
try {
|
try {
|
||||||
// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
|
// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
|
||||||
return !xhr.status && location.protocol == "file:" ||
|
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){}
|
} catch(e){}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
@ -471,7 +472,8 @@ jQuery.extend({
|
||||||
if (etag)
|
if (etag)
|
||||||
jQuery.etag[url] = 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 ) {
|
httpData: function( xhr, type, s ) {
|
||||||
|
|
|
@ -11,6 +11,11 @@ if ($ifNoneMatch == $etag) {
|
||||||
}
|
}
|
||||||
|
|
||||||
header("Etag: " . $etag);
|
header("Etag: " . $etag);
|
||||||
echo "OK: " . $etag;
|
|
||||||
|
if ( $ifNoneMatch ) {
|
||||||
|
echo "OK: " . $etag;
|
||||||
|
} else {
|
||||||
|
echo "FAIL";
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -10,6 +10,11 @@ if ($ifModifiedSince == $ts) {
|
||||||
}
|
}
|
||||||
|
|
||||||
header("Last-Modified: " . $ts);
|
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,
|
url: url,
|
||||||
ifModified: true,
|
ifModified: true,
|
||||||
success: function(data, status) {
|
success: function(data, status) {
|
||||||
equals(status, "notmodified");
|
if ( data === "FAIL" ) {
|
||||||
ok(data == null, "response body should be empty")
|
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();
|
start();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -917,8 +922,13 @@ test("jQuery.ajax - Etag support", function() {
|
||||||
url: url,
|
url: url,
|
||||||
ifModified: true,
|
ifModified: true,
|
||||||
success: function(data, status) {
|
success: function(data, status) {
|
||||||
equals(status, "notmodified");
|
if ( data === "FAIL" ) {
|
||||||
ok(data == null, "response body should be empty")
|
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();
|
start();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue