ajax

1:什么是ajax

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新,可以局部刷新而不必整个页面整体刷新

2:如何与服务器进行数据交换?

首先,需要自己搭建服务器,在服务端的环境中可运行PHP语言

从网页进入服务器有三种基本方式:

1. ip+端口号

2. localhost:+端口号

3.  127.0.0.1+端口号

然后,和服务器端的php页面建立联系

3:ajax:发送请求

  3.1:创建ajax对象-xmlhttprequest对象

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

  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.创建请求的消息,连接服务器 状态码0=>1
xhr.open('GET','07.php',true); //最后一个参数是bool,表示同步||异步,true异步
console.log('步骤三完成')

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

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


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

4:使用ajax发送get请求:

<h1>使用ajax发送get请求</h1>
    <!-- 服务端如果用户名存在返回1
    不存在返回0 -->
    用户名:<input type="text" id="username">
    <span id="ts"></span>
    <br>
    密码:<input type="text">

    <button id="btn">验证用户名</button>
    <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是直接可以在地址栏中调试

5:使用ajax发送post请求:

    <h1>使用ajax发送post请求</h1>
    <!-- 
    失焦验证
    正则验证: 姓名3-10小写字母
     成绩: 0-99 -->
    学生姓名:<input type="text" id="uname"><br>
    学生成绩:<input type="text" id="score"><br>
    <button id="btn">注册</button>    

    <p id="p01"></p>
    <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>
原文地址:https://www.cnblogs.com/3542446186qq/p/10414980.html