Maison > interface Web > js tutoriel > Analyse d'un exemple de communication asynchrone simple AJAX

Analyse d'un exemple de communication asynchrone simple AJAX

亚连
Libérer: 2018-05-25 11:44:03
original
1583 Les gens l'ont consulté

Cet article présente principalement la communication asynchrone simple AJAX. Il analyse les techniques et les précautions associées de la communication asynchrone Ajax avec des exemples. Il a une certaine valeur de référence.

Cet article décrit AJAX. avec des exemples. Méthode de communication asynchrone simple. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :

Client : Envoyer une requête vide au serveur.

Le code est le suivant :


<html>
<head>
<title>XMLHttpRequest</title>
<script language="javascript">
var xmlHttp;
function createXMLHttpRequest(){
  if(window.ActiveXObject)
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  else if(window.XMLHttpRequest)
    xmlHttp = new XMLHttpRequest();
}
function startRequest(){
  createXMLHttpRequest();
  xmlHttp.open("GET","9-1.aspx",true);
  xmlHttp.onreadystatechange = function(){
    if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
      alert("服务器返回: " + xmlHttp.responseText);
  }
  xmlHttp.send(null);
}
</script>
</head>
<body>
<input type="button" value="测试异步通讯" onClick="startRequest()">
</body>
</html>
Copier après la connexion


Côté serveur : Retourner directement au client une chaîne.

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<%@ Import Namespace="System.Data" %>
<%
    Response.Write("异步测试成功,很高兴");
%>
Copier après la connexion

Problème 1 :

Étant donné que le navigateur IE met automatiquement en cache les résultats de la communication asynchrone, il ne mettra pas à jour les résultats de retour du serveur en temps réel. (Mais Firefox se rafraîchira normalement)

Afin de résoudre le problème de cache d'IE lors de la connexion au serveur de manière asynchrone, modifiez le code client comme suit :


var sUrl = "9-1.aspx?" + new Date().getTime(); //地址不断的变化
xmlHttp.open("GET",sUrl,true);
Copier après la connexion


Ajouter un paramètre milliseconde de l'heure actuelle à la fin de l'adresse du serveur consulté, afin que l'adresse URL de chaque requête soit différente, trompant ainsi le navigateur IE pour résoudre la mise à jour problème causé par le cache IE.

Question 2 :

Lors du test du programme, si le client et le serveur sont tous deux sur le même ordinateur, l'objet asynchrone renvoie le code d'état http de l'état actuel request == 0 , donc le code client est à nouveau modifié comme suit :


//if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
if( xmlhttp.readyState == 4)
{
   if( xmlhttp.status == 200 || //status==200 表示成功!
     xmlhttp.status == 0 ) //本机测试时,status可能为0。
      alert("服务器返回: " + xmlHttp.responseText);
}
Copier après la connexion


Donc, le code client final est le suivant suit :


<html>
<head>
<title>XMLHttpRequest</title>
<script language="javascript">
var xmlHttp;
function createXMLHttpRequest(){
  if(window.ActiveXObject)
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  else if(window.XMLHttpRequest)
    xmlHttp = new XMLHttpRequest();
}
function startRequest(){
  createXMLHttpRequest();
  var sUrl = "9-1.aspx?" + new Date().getTime(); //地址不断的变化
  xmlHttp.open("GET",sUrl,true);
  xmlHttp.onreadystatechange = function(){
    //if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
    if( xmlhttp.readyState == 4)
    {
     if( xmlhttp.status == 200 || //status==200 表示成功!
       xmlhttp.status == 0) //本机测试时,status可能为0。
      alert("服务器返回: " + xmlHttp.responseText);
     }
  }
  xmlHttp.send(null);
}
</script>
</head>
<body>
<input type="button" value="测试异步通讯" onClick="startRequest()">
</body>
</html>
Copier après la connexion

Ce qui précède est ce que j'ai compilé pour vous. J'espère qu'il vous sera utile à l'avenir.

Articles connexes :

Explication détaillée du mécanisme AJAX et de la communication interdomaine

Méthode d'optimisation des performances d'Ajax non- actualiser la pagination


Téléchargement d'images Ajax basé sur Firefox

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal