Ajax基础

目录

1,Ajax介绍

        1.1 什么是Ajax

        1.2 Ajax优缺点

2,Ajax的工作原理

3,创建Ajax引擎对象

        3.1 Ajax引擎概念

        3.2 如何创建一个Ajax引擎

4,使用Ajax引擎对象发送get或者post请求

        4.1 发送get请求的步骤

        4.2 xhr.readState 五种状态

        4.3 xhr.status http响应状态码

        4.4 ajax4看

        4.5 原生js发送post请求的方式

        4.6 jq发送get和post请求

        4.7 jq万能发送post和get请求                       

5,同步和异步

6,JSON在Ajax中的应用

7,Ajax应用(邮箱注册验证)


1,Ajax介绍

        1.1 什么是Ajax

                AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。它是一套综合了多项技术的浏览器端网页开发技术。这些技术包括Javascript,XHTML和CSS、DOM、XML和XMLHttpRequest.通过在浏览器与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

        1.2 Ajax优缺点

             优点:(1无刷新页面,局部刷新

                        (2)减少用户心理等待时间

                        (3)减少服务器压力和网络压力

             缺点:  对搜索引擎不友好

2,Ajax的工作原理

        通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。

3,创建Ajax引擎对象

        3.1 Ajax引擎概念

                Ajax引擎是Ajax综合技术的核心,作为浏览器页面和服务器交互的一个桥梁

        3.2 如何创建一个Ajax引擎

                非IE浏览器和高版本浏览器               

var obj= new XMLHttpRequest()

4,使用Ajax引擎对象发送get或者post请求

        4.1 发送get请求的步骤

                (1)创建一个Ajax对象

                        var xhr= new XMLHttpRequest()

                (2)请求地址                      

        xhr.open("GET","请求地址")

                 (3)监听请求和响应数据

xhr.onreadystatechange=function(){
  if(xhr.readyState==4&&xhr.status==200){
    //请求成功  返回响应数据
    console.log(xhr.responseText)
  }
}

                (4)发送

        xhr.send()

        4.2 xhr.readState 五种状态

                0:请求初始化

                1:服务器连接已建立

                2:请求已连接

                3:请求处理中

                4:请求已完成,且响应以就绪

        4.3 xhr.status http响应状态码

                200  成功        404  访问资源找不到    

                304  从浏览器缓存中拿取数据       403  权限不够

                500以上  服务器内部错误

        4.4 ajax4看

                1,看请求地址

                2,看请求方式和响应状态码

                3,看请求参数

                4,看响应数据

        4.5 原生js发送post请求的方式

                (1)创建一个Ajax对象

                   var xhr= new XMLHttpRequest()

                (2)请求地址                      

        xhr.open("POST","请求地址")

                (3)设置请求头

xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
//仿form表单提交给服务器

                 (4)监听请求和响应数据

xhr.onreadystatechange=function(){
  if(xhr.readyState==4&&xhr.status==200){
    //请求成功  返回响应数据
    console.log(xhr.responseText)
  }
}

                (5)发送

    xhr.send('name=value&name1=value1')

        4.6 jq发送get和post请求

<script src="./jquery.js"></script>
<script>
   //jq发送get请求
    $.get("http://139.9.177.51:3333/api/testGet?name=lisa",function(res){
        console.log(res)
    })
    //jq发送post请求
    $.post("http://139.9.177.51:3333/api/testPost",'name=lisa',function(data){
        console.log(data)
    })
</script>

        4.7 jq万能发送post和get请求                       

$.ajax({
        url:"请求地址",
        data:"请求参数",
        type:"请求类型get或者post",
        dataType:"响应回来的数据类型(JSON)",
        success:function(res){
            console.log(res)
        },
        error:function(res){
            console.log(res)
        }
    })

5,同步和异步

        ajax同步请求,是指当前端通过ajax发送一个请求到服务端,JavaScript 会等到服务器响应就绪才继续执行。

        异步请求:ajax发送请求后,JavaScript 无需等待服务器的响应,继续执行接下来的代码,等到响应成功以后,执行响应的结果;

6,JSON在Ajax中的应用

        (1) JSON是js的内置对象

        (2)key值必须是双引号引起来

        (3)value值是字符串必须用双引号引起来

        (4)不能写注释

        (5)不能写注释

        (6)JSON 2个核心方法(掌握)

                将字符串转换为对象:JSON.parse()

                把对象转换为字符串:JSON.stringify()

        (7)轻量级数据,主要用于前后端数据交换(ajax)       

7,Ajax应用(邮箱注册验证)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
    .error{
        color: red;
        font-size: 12px;
    }
</style>
<body>
    <p>
        邮箱 <input type="email" name="" id="email"><span></span>
    </p>
    <p>
        <button type="button" id="reg_btn">注册</button>
    </p>
</body>
<script src="./jquery.js"></script>
<script>
    //form表单默认同步提交
    //邮箱失去焦点事件
    $('#email').blur(function(){
        //获取email值
        let emailvalue=$(this).val();
        //正则表达式
        if(/^[a-zA-Z0-9][a-zA-Z0-9_]+\@[a-zA-Z0-9]+\.[a-zA-Z]{2,5}(\.[a-zA-Z]{2,5})*$/i.test(emailvalue)){
            //发送ajax请求 判断邮箱是否重复
            $.ajax({
                url:"http://139.9.177.51:3333/api/emailExist",
                type:"post",
                data:"email="+emailvalue,
                dataType:"json",
                success:function(res){
                    console.log(res)
                    if(res.code===200){
                        //可用
                        $("#email").next().html("邮箱可用").removeClass("error"); 
                    }else{
                        //重复
                        $("#email").next().html("邮箱重复了").addClass("error");
                    }
                }
            })
        }else{
            $(this).next().html("邮箱格式不合法").addClass("error");
        }
    })
    $('#reg_btn').click(function(){
        //调用后端注册邮箱接口 发送ajax
        $.ajax({
            url:"http://139.9.177.51:3333/api/reg",
            type:"post",
            data:"email="+$("#email").val(),
            dataType:"json",
            success:function(res){
                if(res.code===200){
                    alert("注册成功")
                }else{
                    alert("注册失败")
                }
            }
        })
    })
</script>
</html>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stay calm~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值