Fixes #8125. Status is set to 200 for requests with status 0 when location.protocol if "file:". Added test/localfile.html to control it works.
This commit is contained in:
parent
cb49b4a1b6
commit
cb85da7b62
|
@ -156,12 +156,14 @@ if ( jQuery.support.ajax ) {
|
||||||
statusText = "";
|
statusText = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filter status for non standard behaviours
|
// Filter status for non standard behaviors
|
||||||
status =
|
status =
|
||||||
|
// Most browsers return 0 when it should be 200 for local files
|
||||||
// Opera returns 0 when it should be 304
|
// Opera returns 0 when it should be 304
|
||||||
// Webkit returns 0 for failing cross-domain no matter the real status
|
// Webkit returns 0 for failing cross-domain no matter the real status
|
||||||
status === 0 ?
|
!status ?
|
||||||
(
|
// All: for local files, 0 is a success
|
||||||
|
( location.protocol === "file:" ? 200 : (
|
||||||
// Webkit, Firefox: filter out faulty cross-domain requests
|
// Webkit, Firefox: filter out faulty cross-domain requests
|
||||||
!s.crossDomain || statusText ?
|
!s.crossDomain || statusText ?
|
||||||
(
|
(
|
||||||
|
@ -172,7 +174,7 @@ if ( jQuery.support.ajax ) {
|
||||||
) :
|
) :
|
||||||
// We assume 302 but could be anything cross-domain related
|
// We assume 302 but could be anything cross-domain related
|
||||||
302
|
302
|
||||||
) :
|
) ) :
|
||||||
(
|
(
|
||||||
// IE sometimes returns 1223 when it should be 204 (see #1450)
|
// IE sometimes returns 1223 when it should be 204 (see #1450)
|
||||||
status == 1223 ?
|
status == 1223 ?
|
||||||
|
|
40
test/localfile.html
Normal file
40
test/localfile.html
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr" id="html">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>jQuery Local File Test</title>
|
||||||
|
<!-- Includes -->
|
||||||
|
<script src="../src/core.js"></script>
|
||||||
|
<script src="../src/support.js"></script>
|
||||||
|
<script src="../src/data.js"></script>
|
||||||
|
<script src="../src/queue.js"></script>
|
||||||
|
<script src="../src/attributes.js"></script>
|
||||||
|
<script src="../src/event.js"></script>
|
||||||
|
<script src="../src/sizzle/sizzle.js"></script>
|
||||||
|
<script src="../src/sizzle-jquery.js"></script>
|
||||||
|
<script src="../src/traversing.js"></script>
|
||||||
|
<script src="../src/manipulation.js"></script>
|
||||||
|
<script src="../src/css.js"></script>
|
||||||
|
<script src="../src/ajax.js"></script>
|
||||||
|
<script src="../src/ajax/jsonp.js"></script>
|
||||||
|
<script src="../src/ajax/script.js"></script>
|
||||||
|
<script src="../src/ajax/xhr.js"></script>
|
||||||
|
<script src="../src/effects.js"></script>
|
||||||
|
<script src="../src/offset.js"></script>
|
||||||
|
<script src="../src/dimensions.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<script>
|
||||||
|
jQuery.ajax( "data/badjson.js" , {
|
||||||
|
dataType: "text"
|
||||||
|
}).success(function() {
|
||||||
|
$( "<div/>" ).text( "Success OK" ).appendTo( "body" );
|
||||||
|
});
|
||||||
|
jQuery.ajax( "data/doesnotexist.ext" , {
|
||||||
|
dataType: "text"
|
||||||
|
}).error(function() {
|
||||||
|
$( "<div/>" ).text( "Error OK" ).appendTo( "body" );
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
Loading…
Reference in a new issue