AJAX简单异步通信实例分析

 更新时间:2015年03月30日 17:10:42   作者:xugang  
这篇文章主要介绍了AJAX简单异步通信,实例分析了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("异步测试成功,很高兴");
%>

问题一:

由于IE 浏览器会自动缓存异步通信的结果,不会实时更新服务器的返回结果。(但Firefox 会正常刷新)

为了解决异步连接服务器时IE 的缓存问题,更改客户端代码如下:

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

在访问的服务器地址末尾添加一个当前时间的毫秒数参数,使得每次请求的URL地址不一样,从而欺骗IE 浏览器来解决IE 缓存导致的更新问题。

问题二:

当测试程序时,如果客户端和服务器端都在同一台计算机上时,异步对象返回当前请求的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常见问题有哪些?

    Ajax常见问题有哪些?

    今天我来说一下经常在使用js时遇到的三个问题,网友们也可以给我留言写上更多的常见问题。
    2011-09-09
  • 非常简单的Ajax请求实例附源码

    非常简单的Ajax请求实例附源码

    这篇文章为大家推荐了一个非常简单的Ajax请求实例,可以在不重载页面的情况与 Web 服务器交换数据,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 零基础学习AJAX之制作自动校验的表单

    零基础学习AJAX之制作自动校验的表单

    这篇文章主要介绍了零基础学习AJAX之制作自动校验的表单,需要的朋友可以参考下
    2015-01-01
  • ajax提交整个from表单示例代码

    ajax提交整个from表单示例代码

    这篇文章主要介绍了ajax提交整个from表单实现代码,需要的朋友可以参考下
    2014-05-05
  • Ajax serialize() 表单进行序列化方式上传文件

    Ajax serialize() 表单进行序列化方式上传文件

    这篇文章主要介绍了Ajax serialize() 表单进行序列化方式上传文件的相关资料,需要的朋友可以参考下
    2017-04-04
  • Ajax实现上传图像功能的示例详解

    Ajax实现上传图像功能的示例详解

    这篇文章主要介绍了如何利用Ajax实现上传图像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-04-04
  • jquery中的ajax同步和异步详解

    jquery中的ajax同步和异步详解

    jquery ajax同步的意思是当JS代码加载到当前ajax的时候会把页面里所有的代码停止加载,页面出现了假死状态,当这个ajax执行完毕后才会继续运行其他的代码假死状态解除。而异步的意思是这个ajax代码运行中的时候其他代码一样可以运行。本文给大家详解,感兴趣的朋友参考下
    2015-09-09
  • 基于Ajax技术实现考试倒计时并自动提交试卷

    基于Ajax技术实现考试倒计时并自动提交试卷

    这篇文章主要介绍了基于Ajax技术实现考试倒计时并自动提交试卷 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • MUi框架ajax请求WebService接口实例

    MUi框架ajax请求WebService接口实例

    下面小编就为大家分享一篇MUi框架ajax请求WebService接口实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Ajax 框架学习笔记

    Ajax 框架学习笔记

    下面是一些常见ajax的一些属性与方法,大家一定要熟练掌握。
    2009-03-03

最新评论