I'm playing around with ASP.net MVC and JQuery at the moment. I've come across behavour which doesn't seem to make sense.
I'm calling JQuery's $.getJSON
function to populate some div's. The event is triggered on the $(document).ready
event. This works perfectly.
There is a small AJAX.BeginForm
which adds another value to be used when populating the divs. It calls the remote function correctly and upon success calls the original javascript function to repopulate the divs.
Here is the weird part: In FireFox and Chrome - Everything works. BUT In IE8 (Beta) this second call to the populate Div script (which calls the $.getJSON function) gets cached data and does not ask the server!
Hope this question makes sense: In a nut shell - Why is $.getJSON
getting cached data? And why is it only effecting IE8?
Just to let you know, Firefox and Chrome consider all Ajax request as non-cachable. IE (all versions) treat Ajax call just as other web request. That's why you see this behavior.
How to force IE to download data at each request:
Code:
I solved this same problem by placing the following attribute on the Action in the Controller:
You may need to send a cache-breaker.
I would recommend using $.ajax( { cache: no }) just in case ( adds a random suffix to the get request)
( I tend to use $.ajax everywhere these days, more tuneable )
This is how it worked for me...
Thanks Kent for your answer. Using $.ajax('{ cache: no }'); worked perfectly. [edit]
Or at least I thought i did. Seems that the jquery $.getJSON isn't reading any changes made to the $.ajax object.
The solution that ended up working was to add a new parameter manually
the date resolution is only to the minute; which effectively means this solution still caches for upto one minute. This is acceptable for my purposes.
Ready for THE answer ?
http://lestopher.tumblr.com/post/21742012438/if-youre-using-ie8-and-getjson
So, just add
at the beginning of your script and BANG it works !