From cb85da7b62e74e7339ed652ade209aaffbd0c15b Mon Sep 17 00:00:00 2001 From: jaubourg Date: Tue, 1 Feb 2011 17:22:01 +0100 Subject: [PATCH] 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. --- src/ajax/xhr.js | 10 ++++++---- test/localfile.html | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 test/localfile.html diff --git a/src/ajax/xhr.js b/src/ajax/xhr.js index b820642..47cfc6c 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 0000000..8021631 --- /dev/null +++ b/test/localfile.html @@ -0,0 +1,40 @@ + + + + + jQuery Local File Test + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- 1.7.10.4