Ajax学习记录

 XMLHttpRequest对象:

该对象是处理所有服务器通信的对象。通过XMLHttpRequest对象与服务器进行对话的是javascript技术。这不是一般的应用程序流,这恰恰是ajax的强大之处。
ajax基本上就是将javascript和XMLHttpRequest对象放在WEB表单与服务器之间,当用户填写好表单之后并不是将表单数据直接发送给服务器,而是通过javascript获取表单数据并向服务器发送请求,同时用户屏幕并不会闪烁,消失或者延迟。换句话说,javascript代码向服务器发送请求是幕后操作的,用户甚至不知道请求的发出,而且javascript向服务器发送请求时异步的,在发送请求的同时用户可以继续浏览网页,滚动,或者使用应用程序。
当发送给服务器的数据经过一系列的逻辑处理之后,返回的数据同样是由javascript代码接受,而当接收到后台返回的数据时,javascript代码可以对该数据进行进一步的操作,可以迅速的更新表单数据,让人感觉到应用程序是立即完成的,同时可以对数据进行进一步的运算,再发送另一个请求,而这一切的处理都是不需要用户干预的,这就是XMLHttpRequest对象的强大之处,他可以根据需要自行与服务器进行交互,用户甚至完全不知道幕后所发生的一切。结果就是类似于桌面应用程序的动态、快速响应、高交互性的体验,但是背后又拥有互联网的全部强大力量。
创建XMLHttpRequest对象:
var httprequest = new XMLHttpRequest();
javascript的基本任务
1、获取表单数据
2、修改表单数据(更行表单数据)
3、解析HTML和XML
 
对于不同的浏览器,声明XMLHttpRequest对象的方法是有差异的,在IE中,由于可能安装的javascript版本可能不同,所以声明XMLHttpRequest对象的方法也有所不同,声明对象的方法为:
       使用Microsoft 浏览器
var xmlhttp = false;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
  xmlhttp = new ActiveXObject("Macrosoft.XMLHTTP");
}
   catch(e2)
{
  xmlhttp = false;
}
}
 
使用非microsoft浏览器:
var xmlhttp = false;
try
{
xmlhttp = new XMLHttpRequest();
}
 
支持多浏览器的声明方法:
var xmlhttp = false;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
   xmlhttp = new ActiveXObject("Macrosoft.XMLHTTP");
}
   
   catch(e2)
{
   xmlhttp = false;
}
}
 
if(!xmlhttp && typeof(XMLHttpRequest) != 'undefined')
{
xmlhttp = new 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 type="text/javascript">
        //发出服务器请求
        function callserver() {
            //声明XMLHttpRequest对象
            var xmlhttp = false;
            try {
                xmlhttp = new ActiveXObject("Mxml2.XMLHTTP");
            }
            catch (e) {
                try {
                    xmlhttp = new ActiveXObject("Macrosoft.XMLHTTP");
                }
                catch (e2) {
                    xmlhttp = false;
                }
            }
            if (!xmlhttp && typeof (XMLHttpRequest) != 'undefined') {
                xmlhttp = new XMLHttpRequest();
            }
            else {
                alert("创建XMLHttpRequest对象出错!");
            }
            //向服务器发送请求
            xmlhttp.open("post", "Getdata.ashx?ts=" + new Date(), false); //准备向服务器的Getdate.ashx发出post请求
 
            //监听onreadystatechange()事件,当 readyState 为 3 时,它也可能调用多次。
            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4) {
                    if (xmlhttp.status == 200) {
                        var result = xmlhttp.responseText;
                        document.getElementById("txtbox1").value = result;
                    }
                }
            };
            xmlhttp.send();
        }
    </script>
</head>
<body>
    <input type="text" id="txtbox1" style="width:300px;" />
    <input type="button" value="ajax提交" />
</body>
</html>
 
Getdata.ashx中处理
namespace WebApplication1.html
{
    /// <summary>
    /// Getdata 的摘要说明
    /// </summary>
    public class Getdata : IHttpHandler
    {
 
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //context.Response.Write("Hello World");
            string ts = context.Request["ts"];
            context.Response.Write(ts);
        }
 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
 
 
判断用户是否已经注册实例(jquery)
 
当文本框失去焦点判断用户名是否已经存在
 
    <asp:TextBox ID="LoginName" runat="server" CssClass="txtstyle"></asp:TextBox>
    <span id="usernamerepeat" style="color:Red;">用户名已经存在!</span>
 
jquery代码:
        <script src=\'#\'" /Scripts/jquery-1.4.1.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function () {
                $("#usernamerepeat").hide();
                var UsernameId = "<%=LoginName.ClientID %>";
                var id = "#" + UsernameId;
                $(id).blur(function () {
                    var username = $(id).val();
                    $.post("RegisterHandle.ashx", { "username": username }, function (data, status) {
                        if (status == "success") {
                            if (data == "1") {
                                $("#usernamerepeat").show();
                            }
 
                            else {
                                $("#usernamerepeat").hide();
                            }
                        }
 
                        else {
                            alert("ajax错误!");
                        }
                    });
                });
            });
        </script>
 
RegisterHandle.ashx处理代码:
 
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //context.Response.Write("Hello World");
            string UserName = context.Request["username"];
 
            SqlConnection con = new SqlConnection();//声明管道
            con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["con"].ToString();//连接数据库管道
            con.Open();//打开管道
 
            SqlCommand cmd = new SqlCommand();
 
            cmd.CommandText = "select * from Users where UserName=@UserName";//查询
            cmd.Parameters.AddWithValue("@UserName", UserName);
 
            cmd.Connection = con;//实行管道通讯
 
            SqlDataReader reader = cmd.ExecuteReader();
 
            if (reader.Read())
            {
                context.Response.Write("1");
            }
 
            else
            {
                context.Response.Write("0");
            }
        }

你可能感兴趣的:(Ajax学习记录)