AJAX

XMLHttpRequest和ActiveXObject的区别

XMLHttpRequest和ActiveXObject学习 

XMLHttpRequest 对象


ajax请求页  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="js/jquery-1.10.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        function btnClick() {
            //var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //创建XMLHTTP对象,相当于WebClient。老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象 而新版本的任何浏览器都是支持下面所有现代浏览器都内建了 XMLHttpRequest 对象。所以一般情况下,我们都用XMLHttpRequest。所以,这一句可以用下面的var xmlhttp = new XMLHttpRequest()来替代


            var xmlhttp = new XMLHttpRequest();//通过XMLHttpRequest对象来和服务器进行通信;在与服务器进行异步数据传输时,传输的数据更少;更好的用户体验.

            if (!xmlhttp) { //如果没有成功创建XMLHTTP对象,即创建失败,就弹出失败消息
                alert("创建xmlhttp对象异常");
                return false;
            }
            xmlhttp.open("POST", "Handler1.ashx", false)//准备向服务器Handler1.ashx发出get请求

            //XMLHTTP默认(也推荐)不是同步请求的,也就是Open方法并不像WebClinet的DownloadString那样吧服务器返回的数据拿到才返回,是异步的,因此需要监听onreadystatechange事件
            xmlhttp.onreadystatechange = function () { //注册一个事件

                //// readyState是请求的状态,它有5个值:0=未初始化;1=正在加载;2=已经加载;3=交互中;4=完成,即数据接收完毕;
                if (xmlhttp.readyState == 4) { //数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据

                    if (xmlhttp.status == 200) {//如果状态码为200 则异步请求成功
                        document.getElementById("txt1").value = xmlhttp.responseText; //responseText属性为服务器返回的文本
                    }
                    else {
                        alert("ajax服务器返回错误");
                    }
                }

            }
            xmlhttp.send(); //这个时候才是开始发送请求

        }
        
    </script>
</head>
<body>
    <input type="text" id="txt1" />
    <input type="button" value="提交" onclick="btnClick()" />
</body>
</html>



服务器页

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace AJAX
{
    /// <summary>
    /// Handler1 的摘要说明
    /// </summary>
    public class Handler1 : IHttpHandler
    {
        /// <summary>
        /// 在页面输出当前时间
        /// </summary>
        /// <param name="context"></param>
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            //context.Response.Write("Hello World");
            context.Response.Write(DateTime.Now);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。