zoukankan      html  css  js  c++  java
  • 复习原生ajax

    function ajax(url, fnSucc, fnFaild)
    {
        //1.创建
        if(window.XMLHttpRequest)
        {
            var oAjax=new XMLHttpRequest();
        }
        else
        {
            var oAjax=new ActiveXObject('Microsoft.XMLHTTP');
        }
        
        //2.连接
        oAjax.open('GET', url, true);
        
        //3.发送
        oAjax.send();
        
        //4.接收
        oAjax.onreadystatechange=function ()
        {
            if(oAjax.readyState==4)        //完成
            {
                if(oAjax.status>=200 && oAjax.status<300 || oAjax.status==304)
                {
                    //alert('成功:'+oAjax.responseText);
                    if(fnSucc)
                    {
                        fnSucc(oAjax.responseText);
                    }
                }
                else
                {
                    //alert('失败:'+oAjax.status);
                    if(fnFaild)
                    {
                        fnFaild(oAjax.status);
                    }
                }
            }
        };
    }

    辅助函数处理url

    function json2url(json){
        json.t=Math.random();
    
        var arr=[];
    
        for(var i in json)
        {
            arr.push(i+'='+json[i]);
        }
    
        return arr.join('&');
    }

    实例1:读取文字

    window.onload=function ()
    {
        var oBtn=document.getElementById('btn1');
        
        oBtn.onclick=function ()
        {
            //alert('aaa.txt?t='+Math.random());
            ajax('aaa.txt?t='+Math.random(), function (str){
                //str——从服务器读回来的内容
                alert(str);
            });
        };
    };

    实例2:注册和登陆

    window.onload=function(){
        var oAddUser=document.getElementById('add_user');
        var oAddPass=document.getElementById('add_pass');
        var oAddBtn=document.getElementById('add_btn');
    
        oAddBtn.onclick=function()
        {
            var url='user.php?'+json2url({
                act:'add',
                user:oAddUser.value,
                pass:oAddPass.value
            })
    
            ajax(url,function(str){
                var json=eval('('+str+')');
                if(json.error){
                    alert('有问题'+json.desc);
                }else{
                    alert('注册成功');
                }
            },function(){
                alert('失败');
            });
        };
    
        var oLgnUser=document.getElementById('login_user');
        var oLgnPass=document.getElementById('login_pass');
        var oLgnBtn=document.getElementById('login_btn');
    
        oLgnBtn.onclick=function(){
            var url='user.php?'+json2url({
                act:'login',
                user:oLgnUser.value,
                pass:oLgnPass.value
            })
    
            ajax(url,function(str){
                var json=eval('('+str+')');
                if(json.error){
                    alert('有问题'+json.desc);
                }else{
                    alert('登陆成功');
                }
            },function(){
                alert('失败');
            })
        };
    };

    本文属于原创,如需转载请注明地址

  • 相关阅读:
    Android和kernel杂散点集合
    Kernel的IIC驱动分析
    Uboot流程分析
    关于在eclipse当中,对接口方法的实现使用@Override报错的解决方式
    任务调度工具oozie和azkaban的对比
    实现Linux和windows之间实现文件传输的问题解决方式。sftp和ftp
    使用spring-boot创建定时任务。同时创建多线程执行定时任务。
    【C++11】新特性——auto的使用
    Inline函数使用注意事项
    结构体变量的sizeof计算
  • 原文地址:https://www.cnblogs.com/leejersey/p/3614059.html
Copyright © 2011-2022 走看看