原生Ajax学习笔记

很早之前也接触过Ajax,用的是JQuery里封装的Ajax,用起来十分的方便简洁,但是每次浏览器在加载整个网页的时候就需要将JQuery文件加载进来,这必然会导致客户端打开速度缓慢。所以就来学习一下原生Ajax怎么请求数据,摆脱对JQuery中的Ajax依赖。

什么是Ajax?

Ajax 全称为Asynchronous Javascript And XML,是一种用于创建快速动态网页的技术。AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。在传统的方式更新网页内容是需要重新加载整个网页。有了Ajax技术后,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

Ajax的异步请求

在AJAX 出现之前,很多在服务器执行的任务都相当费时,总会引起应用程序挂起或停止。使用Ajax异步请求后,在等待服务器响应时执行其他脚本,当响应就绪后对响应进行处理。

Ajax创建对象

//创建XMLHttpRequest对象
var xmlhttp = new XMLHttpRequest();

Ajax的一些方法

方法描述
open(method,url,async)规定请求的类型、URL 以及是否异步处理请求。
method:请求的类型;GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)
send(string)将请求发送到服务器
string:仅用于POST请求
setRequestHeader(header,value)向请求添加 HTTP 头。
header: 规定头的名称
value: 规定头的值

Ajax的一些属性

属性描述
centered responseText获得字符串形式的响应数据。
responseXML获得 XML 形式的响应数据。
onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
status200: "OK"
404: 未找到页面

示例

后端代码示例
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping(value = "/testAjax",method = RequestMethod.POST)
    public @ResponseBody User testAjax(@RequestBody User user){
        //客户端发送ajax请求,传的是json字符串,后端把json字符串封装到user对象中
        System.out.println(user);
        //做响应,这里又会把ajax的传值返回给页面
        return user;

    }
}
html代码示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function f() {
            var data = {
                username:'你好呀',
                password:'今天521',
                age:18
            }
            var xmlHttp = new XMLHttpRequest();
            //绑定监听函数
            xmlHttp.onreadystatechange = function(){
                //判断数据是否正常返回
                if(xmlHttp.readyState==4&&xmlHttp.status==200){
                    //接收数据
                    var result = xmlHttp.responseText;
                    document.getElementById("s_test").innerHTML = result;
                }
            }
            //绑定请求路径,设置请求方式,true为异步,false为同步
            xmlHttp.open("POST","/user/testAjax",true);
            //POST提交设置的协议头
            xmlHttp.setRequestHeader("Content-type","application/json");
            //POST提交将参数,如果是GET提交send不用提交参数
            //JSON.stringify()将data转为json格式传给后台
            xmlHttp.send(JSON.stringify(data));
        }
    </script>
</head>
<button onclick="f()">你好</button>
<span id="span1"></span>
<body>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值