Maison  >  Article  >  interface Web  >  Problème de mise en cache Ajax sous IE8/IE9

Problème de mise en cache Ajax sous IE8/IE9

亚连
亚连original
2018-05-23 16:49:071306parcourir

Cet article vous présente la solution au problème de cache Ajax sous IE8/IE9. Il est très bon et a une valeur de référence. Les amis intéressés devraient y jeter un œil ensemble

<.>Introduction à ajax

AJAX signifie "Asynchronous Javascript And XML", qui fait référence à une technologie de développement Web permettant de créer des applications Web interactives.

AJAX = JavaScript asynchrone et XML (un sous-ensemble du langage de balisage universel standard).

AJAX est une technologie permettant de créer des pages Web rapides et dynamiques.

AJAX permet de mettre à jour les pages Web de manière asynchrone en échangeant une petite quantité de données avec le serveur en arrière-plan. Cela signifie que certaines parties d'une page Web peuvent être mises à jour sans recharger la page entière.

Pour en venir au fait :

Je travaille actuellement sur une boîte d'enregistrement de connexion pour un site Web, en utilisant jquery sur le front-end. Étant donné que la connexion et la connexion ne se trouvent pas sur des pages distinctes, elles apparaissent dans une boîte contextuelle. J'ai donc décidé d'utiliser ajax pour implémenter les fonctions d'enregistrement et de connexion. Je pensais que tout se passerait bien, mais j'ai découvert un problème étrange lors du test.

Il n'y a fondamentalement aucun problème lors des tests avec Chrome, ff et IE10+, mais lors de l'exécution sur IE8 et 9, il semble que je ne parviens pas à me connecter après avoir entré le nom d'utilisateur et le mot de passe corrects. Au début, je pensais que la session était perdue et j'ai commencé à me plaindre du cadre d'arrière-plan.

Mais après un débogage patient, j'ai constaté que la session n'était pas perdue. Je suis vraiment inquiet maintenant. Est-il possible que je ne puisse même pas m'inscrire et me connecter après avoir été là pendant si longtemps ? Cela me fait me rabaisser et me plains des différents changements dans la vie et de l’impermanence des choses. Après avoir brûlé de l'encens pendant 1/3 du temps, j'ai décidé de me remonter le moral.

Après avoir observé attentivement mon code avec quelques commentaires, j'ai trouvé que l'url dans $.ajax était un peu étrange. Bien que l'adresse soit correcte, l'intuition des programmeurs et des lions de siège me dit que les deux frères IE8 et 9 ont peut-être mis en cache mon ajax de leur propre initiative. En pensant à cela, mes mains ont soudainement tremblé et j'ai précipitamment ajouté un horodatage après l'URL.

//就像这样url:myurl+"?t="+(new Date).valueOf()
Ensuite, videz le cache et réessayez, succès ! Vous pouvez vous connecter normalement.

Après vérification Baidu, il s'avère que sous IE8 9, lors d'une requête Ajax, si elle est la même que la requête précédente, les données ne seront plus obtenues depuis le serveur, mais directement obtenues localement.

De cette façon, afin de faire face à l'engouement excessif des versions inférieures d'IE, vous pouvez définir son attribut de cache sur false (non testé) lors de l'utilisation de $.ajax,

cache :

Le paramètre doit être de type booléen. La valeur par défaut est true (lorsque le dataType est script, la valeur par défaut est false ne chargera pas les informations de requête à partir du cache du navigateur).

Ou définissez-le globalement (non testé)

//$.ajaxSetup() 方法设置全局 AJAX 默认选项。$.ajaxSetup({ cache: false });
Ensuite, vous n'avez pas à vous soucier de la mise en cache.

Cependant, le cache n'est pas configuré pour nous causer des problèmes. Après tout, d'autres navigateurs peuvent l'utiliser normalement. Par conséquent, il est nécessaire de configurer un paramètre distinct pour IE8 9 afin de désactiver les informations dans le cache.

//jquery 1.9.0后取消了$.browserif($.browser.msie&&($.browser.version=="8.0"||$.browser.version=="9.0")){
//做处理 
}
Vous pouvez utiliser $.support pour juger après la version 1.9.0

// IE6789,input元素的checked属性不能被拷贝// IE下,input被更换类型后,无法保持前一个类型所设的值if(!$.support.radioValue&&!$.support.noCloneChecked){
//做处理 
}
Ce qui précède est ce que j'ai compilé pour tout le monde. J'espère que cela sera utile à tout le monde à l'avenir. .

Articles connexes :

Le problème selon lequel IE8 ne peut pas être actualisé à chaque fois en utilisant l'accès ajax

Ajax appelle une interface reposante pour transmettre le format Json data Méthode (avec code)

Communication Ajax et cgi sous serveur Boa (tutoriel graphique)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn