快速学习AJAX之三 Ajax实现登陆

 学习了前面的两节课程之后,我们应该对AJAX有了一个比较简单的印象了。学习技术就是为了应用,下面我们继续,以后的课程我们可能会慢慢的做一些小实例了。

这些例子不会太大,但是我预期就是给大家完成一个完全采用AJAX与服务器交互的例子,希望大家跟上学习。当然我说了,我是基于ASP.NET的原生态AJAX,所以后面

的实例中我难免用.NET技术与C#开发语言。请大家谅解,所以,希望对.NET开发有一定基础的童鞋们不要错过啊。

这节课,终于在废话连篇中开始了。

好了,我们最常见得应用是什么呢,哈哈,登陆。你想想,假如一个登陆需要去服务器端实现,那么可能会出现一个问题,就是,我单击登陆按钮之后,郁闷~~~网速不给力,白屏了。恶魔

等了老半天显示一个文字,登陆成功。这么着用户体验肯定不友好,所以呢,我们采用AJAX实现,呵呵,至少不会出现白屏现象。好了,本打算,先创建数据库的,后来,由于种种原因。

还是等以后的例子,在创建数据库吧,我们先简单的实现功能,以后在慢慢实现其他的。

登陆需要什么?用户名,密码  验证码,这回就先不做了,下节课补上。 安全性传送POST

先准备一个 表格

<body>
    <table>
       <tr><th colspan="2">登陆窗体</th></tr>
       <tr><td>用户名</td><td><input type="text" id="name"/></td></tr>
       <tr><td>密码</td><td><input type="password" id="pwd"/></td></tr>
       <tr><td colspan="2" align="center"><input type="button" value="登陆" οnclick="getAjax();" /></td></tr>
       <tr><td colspan="2" id="returnLogin" align="center"></td></tr>
    </table>
    
</body>


 

页面就不做美工了 ,呵呵,那个比较费时间的眨眼

撒 看看效果,呵呵,一般般啦。

下面该做什么呢?当然是创建 XMLHttpRequest 异步对象了,没这个,还做什么啊。

哎,算了,还是写出AJAX代码,然后再做研究吧

    <style type="text/css">
    *{
        padding:0px;
        margin:0px;
        font-size :12px;
    }
    table{
        margin:0 auto;
    }
    </style>
    <script type="text/javascript">
        var xmlHttp = false;
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e1) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e2) {
                xmlHttp = false;
            }
        }
        if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
            xmlHttp = new XMLHttpRequest();
        }
        function getAjax() {
            var name = document.getElementById("name").value;
            var pwd = document.getElementById("pwd").value;
            xmlHttp.open("POST", "Login.ashx", true);
            xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xmlHttp.onreadystatechange = function () {
                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    document.getElementById("returnLogin").innerHTML = xmlHttp.responseText;
                }
            }
            xmlHttp.send("name=" + name + "&pwd=" + pwd);
        }
    </script>


 

 

我像上面的代码,大伙应该都看的懂吧 ,

 var name = document.getElementById("name").value;

var pwd = document.getElementById("pwd").value;

这个是使用JS的办法得到 两个文本框中的数值。

然后我们采用上两节课程中的简单例子,实现了传输两个参数到“Login.ashx”页面

爱上

然后 Login.ashx 的代码如下

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/html";
    var name = context.Request["name"].ToString();
    var password = context.Request["pwd"].ToString();
    if (name=="kingdz"&&password=="kingdz")
        context.Response.Write("登陆成功");
    else
        context.Response.Write("登录失败");
}


 

好了,代码写完了,这么做就可以,实现最基本的登陆了,然后本来上面的用户名和密码都应该从数据库读取的,可是后来,想想还是算了,这么做简单点,速度也快点啊,(*^__^*) 嘻嘻……

是

登陆成功了,然后我想大多数网站不是这么做的吧,登陆成功之后显示什么呢?呵呵当然是显示一个人的基本资料了啊。

我们现在尝试实现以下  我写的数据全部都是虚拟的啊,首先,你先找个美女图片走头像,哈哈

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/html";
    var name = context.Request["name"].ToString();
    var password = context.Request["pwd"].ToString();
    var sex = "男";
    var age = 16;
    var imageUrl="Images/6.png";//不写代码寻找路径了,这里面的图片路径本来应该从数据库中读取出来。呵呵
    StringBuilder sb = new StringBuilder();
    if (name == "kingdz" && password == "kingdz")
    {
        sb.Append("<table><tr><td rowspan='4'><img src='");
        sb.Append(imageUrl);
        sb.Append("'alt='mmpic' /></td><td align='left'>姓名:");
        sb.Append(name);
        sb.Append("</td></tr><tr><td align='left'>性别:");
        sb.Append(sex);
        sb.Append("</td></tr><tr><td align='left'>年龄:");
        sb.Append(age);
        sb.Append("</td></tr><tr><td align='left'>密码:");
        sb.Append(password);
        sb.Append("</td></tr></table>");

        context.Response.Write(sb);
    }

    else
        context.Response.Write("登录失败");
}


 

修改这个方法,看到没?在这里我们需要把  返回对象 responseText拼接成一个 Table

StringBuilder 效率高 首当其冲啊,哈哈

再次郑重声明 ,本AJAX是 基于ASP.NET 的“原生态AJAX”本教程里面的例子涉及很多 C#语言。

在运行以下吧

撒

哈哈,性别搞错了,不过我想这个效果比简单的  登陆成功好多了吧,当然你也可以尝试做成下面的效果

大大

登陆成功替换现在的这个窗体

好了,登陆应该可以了,下节课,我们在讨论以下其他的AJAX在登陆上面可以做的文章。


作者:KingDZ
出处:http://www.cnblogs.com/hihell/
关于作者:作者喜欢编程,擅长ASP.NET网站开发,喜欢MVC,SilverLight开发,喜欢交流,喜欢创新
我的QQ:860866679 MSN:wangdezhen@live.com 期待有共同志向者交流进步。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题 可以通过KingDZ's Email  联系我,非常感谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值