Ajax的基本用法

82 阅读2分钟

什么是Ajax?

Ajax(Asynchronous Javascript And XML),即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信方式。

异步的JavaScript

它可以异步地向服务器发送请求,在等待响应的过程中,不会阻塞当前页面,在这种情况下,浏览器可以做自己的事情。直到成功获取响应后,浏览器才开始处理响应数据。

XML

是前后端数据通信时传输数据的一种格式,现在已经不怎么用了,现在比较常用的是 JSON 所以归纳上述的概念,Ajax就是在浏览器不重新加载网页的情况下,对页面的某部分进行更新。

简单一句话,Ajax就是用JS向服务器发起的一个请求,并获取服务器返回内容

JavaScript中的Ajax的实现

第一步:创建一个Ajax对象

第二步:配置本次的请求信息

第三步:配置一个请求完成后触发的事件

第四步:把本次请求发送出去

代码演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button>获取天气</button>
    <script>
        // 获取天气按钮点击事件
document.querySelector('button').onclick = getWeather;
// 定义获取天气的函数
function getWeather() {
    //第一步:创建一个Ajax对象
    var request = new XMLHttpRequest();
}
//第二步:配置本次的请求信息
request.open('GET', 'https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Paris', true);
//第三步:配置一个请求完成后触发的事件
request.onload = function() {
        console.log(request.responseText);
};
//第四步:发送请求
request.send();
    </script>
</body>
</html>

请求方式

Ajax的请求方式有get、post、delete、patch等,常用的是哥谭post请求,下面我们仅针对这两种请求方式的常见区别做对比

对比项GETPOST
语义用于获取数据用于提交数据
可见性数据在URL中对所有都是可见的数据不会显示在URL
安全性与POST相比,GET的安全性较差,因为所发送的数据是URL的一部分POST比GET更安全,因为参数不会被保存在浏览器历史或web服务器的日志中
数据限制URL的最大长度是2048个字符(浏览器和文本服务器限制了URL的长度,并不是http限制的)无限制
后退按钮/刷新无害数据会被重新提交

同步请求与异步请求

同步请求: 就是在发送一个请求之后,需要等待服务器响应返回,才能够发送下一个请求。
异步请求: 和同步请求相对,异步不需要等待响应,随时可以发送下一次请求。

jQuery优化Ajax写法

$ajax({ key:value, key.value, ... }) 其中key.value为配置项,常见配置项如下:

配置项含义
URL必填,表示请求地址
method选填,默认是GET,表示请求方式
data选填,默认是'',表示携带给后端的参数
async选填,默认是true,表示是否异步
success选填,表示请求成功的回调函数
error选填,表示请求失败的的回调函数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button>获取天气</button>
    <script>
        $('buton').click(getWeather)
        function getWeather(){
            $.ajax({
                url: 'https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=LOCATION',
                type: 'GET',
                data :{city:'芜湖'}
                async:true
                success: function(response) {
                    console.log(response);
                },
                error: function(error) {
                    console.log(error);
                }
            })
        }
    </script>
</body>
</html>