Cannot Access Manifest-cached Files With Ajax From Webapp Saved To Home Screen In Ios Devices, Using Jquery.ajax()
Solution 1:
Well, I hate to have to answer my own question, but here is what I've done in case someone else runs into this problem:
Apparently, when trying to use $.ajax() in offline mode, the request successfully fetches the cached files, but it returns 0 on XHMLHttpRequest.status. Having read up on this, I have seen that a status code of 0 can be returned when the user is offline and even when requesting local files. However, a successful GET should report a status code between 200 and 300. Perhaps $.ajax() checks for a 200-300 status, otherwise the request is considered to have failed.
To get around this, I added code to my error handler for the $.ajax()
request which checks the jqXHR.responseText.**length**
. I know the correct number of characters in my JSON files, so if jqXHR.responseText.length
is the same as this known value, I consider the request a success and continue loading the files. The only extra thing I have to do is add JSON.parse(jqXHR.responseText)
in the error handler, because the data is not parsed on status code 0.
Solution 2:
Another way to go about this (especially if you're a jQuery fan) could be to use the jQ Ajax method and force no cache:
cache:false,
Obviously, ajax will fail to load server side data while offline so why not check if user's online and if so, go ahead and fetch data:
if(navigator.onLine) { //if user's onlinevar data = 'data=' + randomVar;
$.ajax({
url: "url.php",
type: "POST",
timeout:45000, //45 secs data: data,
cache: false,
error: function () { alert("error: 45 secs have passed since request was sent. No data was returned - too slow internet connection or some other random error."); },
success: function (responseText) {
// do whatever if successful
}
});
} // if online
Post a Comment for "Cannot Access Manifest-cached Files With Ajax From Webapp Saved To Home Screen In Ios Devices, Using Jquery.ajax()"