JavaScript 学习-39.jQuery Ajax请求

前言

AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新。

ajax()方法

语法

$.ajax(url, options);

options常用参数:

  • async: 是否异步,默认true 异步
  • type: 请求方式get/post
  • url: 请求url地址
  • contentType: 请求头部参数
  • data: 发到服务器的数据
  • dataType: 预期服务器返回数据类型
  • success: 请求成功调用此函数
  • error: 请求失败调用此函数
  • beforeSend(XHR):发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。
  • complete(XHR, TS):请求完成后回调函数 (请求成功或失败之后均调用)。
  • cache:默认值: true,dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面。
  • global:是否触发全局 AJAX 事件。默认值: true。设置为 false 将不会触发全局 AJAX 事件
  • ifModified:仅在服务器数据改变时获取新数据。默认值: false
  • timeout:设置请求超时时间(毫秒)。此设置将覆盖全局设置。

回调函数:

如果要处理 $.ajax() 得到的数据,则需要使用回调函数:beforeSend、error、dataFilter、success、complete。

  • beforeSend 在发送请求之前调用,并且传入一个 XMLHttpRequest 作为参数。
  • error 在请求出错时调用。传入 XMLHttpRequest 对象,描述错误类型的字符串以及一个异常对象(如果有的话)
  • dataFilter 在请求成功之后调用。传入返回的数据以及 "dataType" 参数的值。并且必须返回新的数据(可能是处理过的)传递给 success 回调函数。
  • success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
  • complete 当请求完成之后调用这个函数,无论成功或失败。传入 XMLHttpRequest 对象,以及一个包含成功或错误代码的字符串。

访问本地数据

在本地同目录新建一个data.txt

{
    "total": 3,
    "rows": [
        {"id": 0, "name": "张三", "tel": "15002222111"},
        {"id": 1, "name": "李四", "tel": "15002222111"},
        {"id": 1, "name": "王五", "tel": "15002222333"},
    ]
}

ajax访问本地数据

    $.ajax({
        url: 'data.txt',
        type: 'get',
        success: function (result, status, xhr) {
            console.log('请求成功:');
            console.log(result);
        },
        error: function (xhr, status, error) {
            console.log('请求失败:')
            console.log(status)
            console.log(error)
        }
    })

访问本地txt文件,返回的是字符串格式

访问网络接口请求

访问get请求接口示例
接口url地址: /api/table/
请求方式: get
接口返回

     {
        "total": 3,
        "rows": [
            {"id": 0, "name": "张三", "tel": "15002222111"},
            {"id": 1, "name": "李四", "tel": "15002222111"},
            {"id": 1, "name": "王五", "tel": "15002222333"},
        ]}

get请求示例

<script>
    $.ajax({
        url: '/api/table/',
        type: 'get',
        success: function (result, status, xhr) {
            console.log('请求成功:');
            console.log(result);
        },
        error: function (xhr, status, error) {
            console.log('请求失败')
        }
    })
</script>

运行结果

success 回调函数

ajax 发送请求后,接口返回status状态有五种:"success", "notmodified", "error", "timeout", or "parsererror"
success 是指http协议状态码小于300的请求

  • result 接口返回body内容
  • status 返回状态,这里是"success"
  • xhr XMLHttpRequest 对象
   $.ajax({
        url: '/api/table/',
        type: 'get',
        success: function (result, status, xhr) {
            console.log('请求成功:');
            console.log(result);
            console.log(status);
            console.log(xhr);
        },
        error: function () {
            console.log('请求失败')
        }
    })

返回结果

接口返回的是json数据,这里的result参数,已经解析成对象了,可以直接取值

    $.ajax({
        url: '/api/table/',
        type: 'get',
        success: function (result, status, xhr) {
            console.log('请求成功:');
            console.log(result);
            console.log(status);
            // result 对象取值
            console.log(result.total);
            console.log(result.rows);
            console.log(result.rows[0]);
        },
        error: function () {
            console.log('请求失败')
        }
    })

error 回调函数

接口状态码大于300的都是error

  • xhr XMLHttpRequest 对象
  • status 接口返回状态
  • error 状态码描述内容

示例

    $.ajax({
        url: '/api/table/',
        type: 'get',
        success: function (result, status, xhr) {
            console.log('请求成功:');
            console.log(result);
        },
        error: function (xhr, status, error) {
            console.log('请求失败:')
            console.log(status)
            console.log(error)
        }
    })

当接口状态码301时:Moved Permanently

当接口状态码404时:Not Found

当接口状态码500时:Internal Server Error

posted @ 2022-06-02 00:08  上海-悠悠  阅读(417)  评论(0编辑  收藏  举报