diff options
author | jaubourg <j@ubourg.net> | 2011-02-01 17:22:01 +0100 |
---|---|---|
committer | jaubourg <j@ubourg.net> | 2011-02-01 17:22:01 +0100 |
commit | cb85da7b62e74e7339ed652ade209aaffbd0c15b (patch) | |
tree | 9587906307841aa77b79b172082e7b9692496651 | |
parent | cb49b4a1b648dea8ce5b1e5dbb2ab5432a84cb63 (diff) | |
download | jquery-cb85da7b62e74e7339ed652ade209aaffbd0c15b.tar.gz jquery-cb85da7b62e74e7339ed652ade209aaffbd0c15b.zip |
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.
-rw-r--r-- | src/ajax/xhr.js | 10 | ||||
-rw-r--r-- | test/localfile.html | 40 |
2 files changed, 46 insertions, 4 deletions
diff --git a/src/ajax/xhr.js b/src/ajax/xhr.js index b82064239..47cfc6c37 100644 --- a/src/ajax/xhr.js +++ b/src/ajax/xhr.js @@ -156,12 +156,14 @@ if ( jQuery.support.ajax ) { statusText = ""; } - // Filter status for non standard behaviours + // Filter status for non standard behaviors status = + // Most browsers return 0 when it should be 200 for local files // Opera returns 0 when it should be 304 // 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 !s.crossDomain || statusText ? ( @@ -172,7 +174,7 @@ if ( jQuery.support.ajax ) { ) : // We assume 302 but could be anything cross-domain related 302 - ) : + ) ) : ( // IE sometimes returns 1223 when it should be 204 (see #1450) status == 1223 ? diff --git a/test/localfile.html b/test/localfile.html new file mode 100644 index 000000000..802163133 --- /dev/null +++ b/test/localfile.html @@ -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>
\ No newline at end of file |