30分钟学会Ajax编程

      Ajax (阿贾克斯)名字很是洋气,相当高大上,如此高大上的技术我们不得不认真学习一下。
      Ajax+PHP 就是在网页不重新加载的情况下,进行局部刷新,刚开始接触Ajax的时候我11年底,当时看到Ajax是相当的神奇,百思不得其解,其实在不刷新页面的基础上,局部改变一下东西也不只是Ajax,像框架技术、js等都可以改变网页的局部数据。今天为什么学习Ajax呢?
      Ajax在登录界面,聊天,实时更新等技术开发时会经常用到,简单说一个小案例:当用户访问一个网站时,想要注册该网站,当用户把所有的信息都填写完之后,点击注册按钮,结果返回来一句话说是该用户已被注册,需重新填写新的用户名! 当到了这一步的时候会出现两种情况:一是该用户有可能关掉该网站,二是如果用户还需要登录该网站,选择了重新填写用户名,那么多表单的值需要重新填写一步(当然也可以把用户刚才填写的值保存cookie返回过来,今天先不说这个),这是用户的心情会很糟糕,即使注册成功了,当怀着一个糟糕的心情进入到你的网站,此时他对网站的数据也是相当的大大减分了。
       今天呢,我们就学一下Ajax异步技术,当看到下面的介绍和事例的时候不妨也把案例复制到本地,对里面的数据稍作改动,把技术学为己有,既然我花费时间给大家一个代码一个代码的敲上去,就想学习Ajax的朋友学会,应了一句话:“授人之鱼 不如 授人之渔”!好了,废话不多说,开始Ajax入门学习:
      首先创建Ajax对象,创建Ajax对象时要注意浏览器的兼容问题,在ie下使用

    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");

      其他浏览器创建Ajax对象:

    httpRequest = new XMLHttpRequest();

    对象创建好之后,想服务器发送请求,XMLHttpRequest 对象提供 open() 和 send() 方法,请求方式有GET 和POST 两种方式,格式分别如下:

    httpRequest.open("GET","loginProcess.php?username=zhang",true);

    httpRequest.send();



    httpRequest.open("POST","loginProcess.php",true);

    httpRequest.send("username=zhang");


    获取服务器的响应:

    document.getElementById("username").innerHTML=httpRequest.responseText;


       一个Ajax的无刷新页面的用户名验证就这样实现了,大家有可能还会有些疑惑,事实上不需要疑惑,按照这个流程,记住对应的几个函数方法就可以搞定了,按照这个流程运用到其他项目中,慢慢的就会对Ajax使用的得心应手。下面来一个实际的案例,可以拿到页面上直接运行,由于是入门篇,没有使用到数据库交互,直接对数据做了指定值判断。事例如下:

login.html:

<span style="font-family:Microsoft YaHei;font-size:14px;color:#00CCCC;"><!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" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Ajax 无刷新验证登录</title>
    <style type="text/css">
    body{margin: 0 auto;margin-left: 500px;}
    .main{text-align: center;float: left;}
    </style>
    <script type="text/javascript">
        function sendRequest(){

            //获取用户输入的用户名
            var username = $('username').value;

            //创建ajax引擎,ajax根据用户使用的浏览器不同,会创建不同的ajax引擎
            if (window.ActiveXObject) {
                //ie浏览器
                http_request=new ActiveXObject("Microsoft.XMLHTTP");
            }else{
                //别的浏览器
                http_request=new XMLHttpRequest();
            }

            //如果ajax引擎创建ok
            if(http_request){
                
                //如果进来了说明Ajax引擎创建ok
                //window.alert("ajax引擎创建ok");
                
                //请求一个servlet去验证用户是否存在.
                var url="loginProcess.php?username="+username;
                
                //打开url,准备发送,,true表示同步处理
                http_request.open("GET",url,true);
                
                //指定一个函数[回调函数],处理从服务器返回的结果.
                http_request.onreadystatechange=chuli;
                
                //发送请求
                
                http_request.send();
                
            }

        }

        //处理函数
        function chuli(){
            
            //成功返回
            if(http_request.readyState==4){
                
                //再次判断成功返回页面
                if(http_request.status==200){
                    
                    //从ajax引擎中取出结果
                    var res=http_request.responseText;
                    
                    if(res=="err"){
                        //提示该用户名不可用
                        $('myres').style.color="red";
                        $('myres').value="该用户不可用吧";
                    }else{
                        
                        $('myres').style.color="blue";
                        $('myres').value="恭喜,你可使用该用户名吧";
                    }
                }
                
            }
        }
        //获取id的$()方法
        function $(id){
            return document.getElementById(id);
        }
    </script>
</head>
<body οnlοad="javascript:document.getElementById('username').focus()">
    <div style="main">
    <h1>欢迎登陆聊天室</h1>
        <form action="loginProcess.php" method="post">
            用户名:<input type="text" id="username" name="username" /><input type="button" οnclick="sendRequest();" value="验证用户名">
            <input disabled="disabled" style="border-width: 0 ;" type="text" id="myres"><br/>

            密  码:<input type="password" name="passwd"/><br/>
            <input type="hidden" value=""/>
            <input type="submit" value="登陆聊天室"/>
        </form>
    </div>
</body>
</html></span>


loginProcess.php:

 $username=$_REQUEST['username'];
    if($username=="zhang"){
        session_start();
        $_SESSION['loginuser']=$username;
        echo "err";
    }else{
        session_start();
        $_SESSION['loginuser']=$username;
        echo "ok";
    }

       OK , 一个易于入门的ajax+php 无刷新验证用户名的小程序写好了,程序员就是每天的敲打着键盘,每天都有一点的收获,无论你是否感受的到进步,只要每天都学习一下,在无形中都是有进步的,由于新浪编辑器解析代码的关系,可能有点点小bug,希望大家也动手调试一下,调试bug也是一种进步。
       分享是一种快乐,本次的小程序仅送给还未搞懂Ajax的朋友,《有问题或对php+Ajax+mysql+js+jQuery+tp框架等问题》欢迎把问题发到我邮箱:347780320@qq.com
新浪微博: www.weibo.com/zlt891216   
QQ群:
山东PHP学习交流①群 158899038
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值