• Ajax发送请求


    1,什么是ajax?

      Asynchronous JavaScript and XML(当然现在xml已经由json代替);

      主要是用于前后台的交互(表单提交已经被废弃);

      使用场景:前台获取数据、表单的失焦验证;


    2,如何在有服务的环境下使用ajax发送请求

      1.创建ajax对象-xmlhttprequest对象:(分为两种类型)

        在新版本的浏览器中:variable=new XMLHttpRequest();

        老版本的IE中:variable=new ActiveXObject("Microsoft.XMLHTTP");

        所以在这里我们需要考虑到兼容性的问题: 

         var xhr;
            if(window.XMLHttpRequest){    //常规,如果有,直接使用
                xhr = new XMLHttpRequest();
            }else{   //如果没有,老版本IE
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            console.log(xhr)
            console.log("状态码:" + xhr.readyState);
            console.log('响应码:' + xhr.status);
            console.log('响应文本:' + xhr.responseText);
            console.log('步骤一完成')

      

      2.通过监听ajax的状态的改变来监听:

    xhr.onreadystatechange = function(){
                console.log('xhr的状态码发生了改变');
                console.log("状态码:" + xhr.readyState);
                console.log('响应码:' + xhr.status);
                console.log('响应文本:' + xhr.responseText);
                console.log('
    ');
            }
    console.log('步骤二完成')

      3.创建请求的消息,连接服务器

    xhr.open('GET','07.php',true);    //最后一个参数是bool,表示同步||异步,true异步
    console.log('步骤三完成')

      4.发送

    xhr.send(null);   //如果是post请求,就放post参数,如果是get请求,发送null就行了 

     

      5.附:

        状态码:

    0: 请求未初始化
    1: 服务器连接已建立
    2: 请求已接收
    3: 请求处理中
    4: 请求已完成,且响应已就绪


    响应码:
    1xx 信息类
    2xx 成功 200
    3xx 重定向 304
    4xx 客户端错误 404
    5xx 服务端错误

     


    3,使用ajax发送get请求

    html部分:

    用户名:<input type="text" id="username">
           <span id="ts"></span><br>
    密码:<input type="text">
        <button id="btn">验证用户名</button>

    原生js部分:

    <script>
            var username = document.getElementById("username");
            var btn = document.getElementById("btn");
            var ts= document.getElementById("ts");
    
            // 点击btn发送ajax请求
            btn.onclick = function(){
                // 1.创建xhr
                var xhr;
                if(window.XMLHttpRequest){    //常规,如果有,直接使用
                    xhr = new XMLHttpRequest();
                }else{   //如果没有,老版本IE
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                }
                // 2.绑定监听函数
                xhr.onreadystatechange = function(){
                    if(xhr.readyState == 4){
                        if(xhr.status == 200){
                            console.log(xhr.responseText)
                            if(xhr.responseText == 1){
                                ts.innerHTML = "该用户名已经被注册"
                            }else if(xhr.responseText == 0){
                                ts.innerHTML = "该用户名可以使用"
                            }
    
    
                        }
                    }
                }
                // 3.建立连接
                xhr.open("GET","08.php?uname=" + username.value,true);
                // 正则验证
                // 4.发送请求
                xhr.send(null)
            }
    
    
            //get是直接可以在地址栏中调试
        </script>

    4,使用ajax发送post请求

     html:

    学生姓名:<input type="text" id="uname"><br>
    学生成绩:<input type="text" id="score"><br>
    <button id="btn">注册</button>    
    <p id="p01"></p>

    原生js部分:

    <script>
            function get_id(id){
                return document.getElementById(id);
            }
    
            var uname = get_id("uname");
            var score = get_id("score");
            var btn = get_id("btn");
            var p01 = get_id("p01");
    
            var reg_name = /^[a-z]{3,10}$/g;
            var reg_score = /^d{1,2}$/g;
            var uname_flag = false;
    
            uname.onfocus = function(){
                reg_name.lastIndex = 0;
                this.style.border = '1px solid #000' 
                uname_flag = false;
            }
            uname.onblur = function(){ 
    
                if(reg_name.test(uname.value)){
                    this.style.border = '1px solid #0f0';
                    uname_flag = true;
                }else {
                    this.style.border = '1px solid #f00'
                }
            }
    
    
    
            btn.onclick = function(){
                if(uname_flag){
                    // 1.
                    var xhr;
                    if(window.XMLHttpRequest){    //常规,如果有,直接使用
                        xhr = new XMLHttpRequest();
                    }else{   //如果没有,老版本IE
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    // 2.
                    xhr.onreadystatechange = function(){
                        if(xhr.readyState == 4){
                            if (xhr.status == 200) {
                                console.log(xhr.responseText);
                                p01.innerHTML = xhr.responseText;
                            }
                        }
                    }
                    // 3.
                    xhr.open('POST','http://localhost:8888/0220ajax/09.php',true);
                    // 3.5  在发送post请求的时候,你得告诉服务器你发送的是一个什么
                    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                    // 4.发送
                    xhr.send('strName=' + uname.value + '&strScore=' + score.value);
    
                }
            }
        </script>

    5,使用jQuery—ajax发送get请求

    用户名:<input type="text" id="username">
          <span id="ts"></span>
          <br>
    密码: <input type="text">
          <button id="btn">验证用户名</button>
    $("#btn").click(function(){
                $.ajax({
                    type : "GET",
                    url : "01.php?uname=" + $("#username").val(),
                    success : function(data){   //就是原生的xhr.responseText
                        console.log(data);
                        if(data == 0){
                            $("#ts").html("该用户名可以使用").css("color","green");
                        }else if(data == 1){
                            $("#ts").html("该用户名已被占用").css("color","red");
                        }
                    },
                    error : function(err){    //错误的
                        console.log(err)
                    }
                })
    })

    6,使用jQuery—ajax发送post请求

     (html部分与上面相同相同)

    $("#btn").click(function(){
                $.ajax({
                    type : "POST",
                    url : "http://192.168.9.154:8888/0221ajax/01.php",
                    data : {
                        uname : $("#username").val()
                    },
                    success : function(data){   //就是原生的xhr.responseText
                        console.log(data);
                        if(data == 0){
                            $("#ts").html("该用户名可以使用").css("color","green");
                        }else if(data == 1){
                            $("#ts").html("该用户名已被占用").css("color","red");
                        }
                    },
                    error : function(err){    //错误的
                        console.log(err)
                    }
                })
    })
  • 相关阅读:
    Linux下zip命令使用
    docker镜像发布到阿里云镜像仓库
    基于官方镜像定制php-fpm容器
    docker-compose部署开发环境
    docker安装discuz!Q
    从零开始实现简单 RPC 框架 4:注册中心
    从零开始实现简单 RPC 框架 3:配置总线 URL
    从零开始实现简单 RPC 框架 2:扩展利器 SPI
    从零开始实现简单 RPC 框架 1:RPC 框架的结构和设计
    文本分类(六):pytorch实现DPCNN
  • 原文地址:https://www.cnblogs.com/1234wu/p/10414973.html
Copyright © 2020-2023  润新知