This article introduces to you the solution to the Ajax cache problem under IE8/IE9. It is very good and has reference value. Friends who are interested should take a look at it together
ajax introduction
AJAX stands for "Asynchronous Javascript And XML" (asynchronous JavaScript and XML), which refers to a web development technology for creating interactive web applications.
AJAX = Asynchronous JavaScript and XML (a subset of Standard Universal Markup Language).
AJAX is a technology for creating fast, dynamic web pages.
By exchanging a small amount of data with the server in the background, AJAX can enable asynchronous updates of web pages. This means that parts of a web page can be updated without reloading the entire page.
Let’s get to the point:
I am currently working on a login registration box for a website, using jquery on the front end. Since sign and login are not on separate pages, they appear in a pop-up box. So I decided to use ajax to implement the registration and login functions. I thought it would be smooth sailing, but I discovered a strange problem during the test.
There is basically no problem when testing with chrome, ff, and IE10. However, when running on IE8 and 9, it appears that I cannot log in after entering the correct user name and password. At first, I thought the session was lost and started complaining about the background framework.
But after patient debugging, I found that the session was not lost. I'm really worried now. Is it possible that I can't even register and log in after being around for so long? This makes me belittle myself and lament the various changes in life and the impermanence of things. After burning incense for 1/3 of the time, I decided to cheer up.
After carefully observing my code with few comments, I found that the url in $.ajax was a bit strange. Although the address is correct, the intuition of programmers and siege lions tells me that the two brothers IE8 and 9 may have cached my ajax on their own initiative. Thinking of this, my hands suddenly trembled, and I hurriedly added a timestamp after the URL.
//就像这样url:myurl+"?t="+(new Date).valueOf()
Then clear the cache and try again, success! You can log in normally.
After checking Baidu, it turns out that under IE8 9, when making an Ajax request, if it is the same as the previous request, the data will not be obtained from the server, but directly obtained locally.
In this way, in order to deal with the excessive enthusiasm of lower versions of IE, you can set its cache attribute to false (not tested) when using $.ajax,
cache:
It is required to be a parameter of Boolean type. The default is true (when the dataType is script, the default is false). If set to false, the request information will not be loaded from the browser cache.
Or set it globally (not tested)
//$.ajaxSetup() 方法设置全局 AJAX 默认选项。$.ajaxSetup({ cache: false });
Then you don’t have to worry about caching.
However, the cache is not set up to cause us trouble. After all, other browsers can use it normally. Therefore, it is necessary to set up a separate setting for IE8 9 to disable the information in the cache.
//jquery 1.9.0后取消了$.browserif($.browser.msie&&($.browser.version=="8.0"||$.browser.version=="9.0")){ //做处理 }
After 1.9.0, you can use $.support to judge
// IE6789,input元素的checked属性不能被拷贝// IE下,input被更换类型后,无法保持前一个类型所设的值if(!$.support.radioValue&&!$.support.noCloneChecked){ //做处理 }
The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.
Related articles:
The problem that IE8 cannot be refreshed every time when using ajax access
Ajax calls the restful interface to transmit Json format data Method (with code)
Ajax and cgi communication under Boa server (graphic tutorial)
The above is the detailed content of Ajax caching problem under IE8/IE9. For more information, please follow other related articles on the PHP Chinese website!