Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Strange AJAX bug with IE 11

Tags:

I'm currently working on a purely HTML and JavaScript driven web app that uses CORS for consuming a remote web service but currently having trouble with IE 11 making a GET request. The funny thing is we've got it working fine in IE8/9/10 just not 11.

The problem is that IE 11 appears to timeout and not wait for a response from the server. The ajax call is simply:

$.ajax(url, {     dataType: 'json',     complete: complete,     type: 'GET',     global: true,     success: success,     crossDomain: true,     xhrFields: {         withCredentials: true     } }); 

In the network tab and using Fiddler I can see IE never even sends the request.

Does anyone have any ideas please?

EDIT: I forgot to mention I've already tried cache: false. I've also found something very strange in that if I switch document mode in dev tools from Edge to 9 then back again the call works everytime, even after I've cleared IE and restarted it, whether cache is true or false. Very bizarre. :\

like image 527
Daveo Avatar asked Nov 26 '13 14:11

Daveo


People also ask

What causes an Ajax error?

Many pages send AJAX requests to a server. Because this relies on the cooperation of the server and the network between the client and the server, you can expect these AJAX errors: Your JavaScript program receives an error response instead of data; Your program has to wait too long for the response.


2 Answers

IE is famous for caching. Make sure you are not getting a cached response. You can either set the cache property value to false or add a unique timestamp to the url so that it will not be a cached response. You may use the $.now() method to get a unique timestamp.

Setting the cache property

$.ajax(url, {     dataType: 'json',     cache : false,     //Other things ... } 

Adding a unique timestamp to URL

var url="somePage.php?"+$.now(); //Use this url now for making the ajax call 

The $.now() method is a shorthand for the number returned by the expression (new Date).getTime()

like image 197
Shyju Avatar answered Sep 23 '22 19:09

Shyju


i'm not sure, maybe it's caching, try to set property "cache: false"

otherwise, you can also try add a datetime at the end of your url, so you have everytime a different url and IE won't cache

url +""+ (new Date()).getTime() 
like image 41
Black Ops Avatar answered Sep 22 '22 19:09

Black Ops