aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjaubourg <j@ubourg.net>2011-02-01 17:22:01 +0100
committerjaubourg <j@ubourg.net>2011-02-01 17:22:01 +0100
commitcb85da7b62e74e7339ed652ade209aaffbd0c15b (patch)
tree9587906307841aa77b79b172082e7b9692496651
parentcb49b4a1b648dea8ce5b1e5dbb2ab5432a84cb63 (diff)
downloadjquery-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.js10
-rw-r--r--test/localfile.html40
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