AJAX簡易非同期通信例解析

亚连
亚连オリジナル
2018-05-25 11:44:031578ブラウズ

この記事では、Ajax の簡単な非同期通信を中心に、その手法と関連する注意事項を例とともに説明します。必要な方は参考にしてください。 AJAX の単純な非同期通信。皆さんの参考に共有してください。具体的な分析は次のとおりです:

クライアント:

空のリクエストをサーバーに送信します。 コードは次のとおりです:

<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>


サーバー側:

文字列をクライアントに直接返します。

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

質問 1:

IE ブラウザは非同期通信の結果を自動的にキャッシュするため、サーバーの戻り結果をリアルタイムで更新しません。 (ただし、Firefox は正常に更新されます)

サーバーに非同期接続するときの IE のキャッシュの問題を解決するには、クライアント コードを次のように変更します:

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


に現在時刻のミリ秒パラメータを追加します。アクセスされたサーバー アドレスの末尾。各リクエストの URL アドレスが異なるため、IE ブラウザを欺いて、IE キャッシュによって引き起こされる更新の問題を解決します。

質問 2:

プログラムをテストするときに、クライアントとサーバーが両方とも同じコンピューター上にある場合、非同期オブジェクトは現在のリクエストの http ステータス コード status == 0 を返すため、クライアント コードが再度変更されます。次のように:

//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);
}


したがって、最終的なクライアント コードは次のとおりです:

<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>

上記は、すべての人のために私がまとめたものです。将来、すべての人に役立つことを願っています。

関連記事:

AJAXの仕組みとクロスドメイン通信の詳細説明


Ajaxリフレッシュフリーページングのパフォーマンス最適化方法



FirefoxベースのAjax画像アップロード


以上がAJAX簡易非同期通信例解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。