ajax简单介绍及代码格式

一、 什么是ajax ?
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
简:Ajax 就是JS 这个语言和 服务端 交互的手段
也是js 这个语言里面的一个方法(能力)
ajax 拆分解释:
=> a: async 异步
=> j: javascript
=> a: and 和
=> x: xml 是一个文本格式(类似于 html)
=> 异步的 js 和后端交互的手段(方式)

  1. Ajax请求的步骤
    (1)创建Ajax对象,
    new XMLHttpRequest()
    (2) 配置请求信息;
    使用Ajax对象.open(请求方式, 请求地址, 是否异步)
    (3)发送请求;
    使用 ajax对象.send() 方法
    (4)接受后端的响应;
    ajax对象.onload = function() {}

  2. readyState状态码
    0:请求以初始化
    1:服务器连接已建立
    2:请求已接收
    3:请求处理中
    4:请求已完成,且响应已就绪

  3. .http状态码(status)
    200:(成功)
    403:(禁止)服务器拒绝请求
    404:(未找到)服务器找不到请求的页面
    408:(请求超时)服务器等候请求发生超时
    500:(服务器内部错误)服务器遇到错误,无法完成请求

Ajax优缺点:

1、不需要插件支持
2、优秀的用户体验
3、提高web程序的性能
4、减轻服务器和带宽的负担

1、浏览器对XMLHttpRequest对象的支持度不足
2、破坏浏览器前进、后退按钮的功能
3、对搜索引擎支持不足
4、开发和调试工具缺乏

二、 Ajax应用场景哪些场景?
1.检查用户名是否已被注册:
很多站点的注册页面都具被自动检测用户名是否存在的友好提示,该功能整体页面并没有刷新,但仍然可以异步与服务器进行数据交换,查询用户输入的用户名是否存在数据库。
2.省市级联下拉框联动:
很多站点都存在输入用户地址的操作,在完成地址输入时,用户所在的省份是下拉框,当选择不同的省份时会出现不同市区的选择,这就是最常见的省市联动效果。
3.内容自动补全:
不管时专注于搜索的百度,还是站点内商品搜索的淘宝,都有搜索的功能,在i搜索框输入查询关键字时,整个页面没有刷新,但会根据关键字显示相关查询字条,这个过程是异步的。

三、 ajax同步与异步的区别

1.同步方式发送请求:xhr.open(请求方式, 请求地址, false)

含义:发送一个请求,需要等待响应返回,然后才能够发送下一个请求,如果该请求没有响应,不能发送下一个请求,客户端会一直处于等待过程中。
代码的书写顺序必须是: 1 -> 2 -> 4 -> 3

2.异步方式发送请求:xhr.open(请求方式,请求地址,true)默认异步,可以省略不写

含义:发送一个请求,不需要等待响应返回,随时可以再发送下一个请求,即不需要等待。
代码的书写顺序:1 -> 2 -> 3 -> 4 或 1-> 2 -> 4 -> 3
☆结论: 不管是发送同步请求还是异步请求
代码书写顺序都是 1 -> 2 -> 4 -> 3

 // 1. 创建 ajax 对象
    var xhr = new XMLHttpRequest()

    // 2. 配置本次请求的信息
    xhr.open('GET', './server/ajax.php')

    // 4. 接受响应
    xhr.onload = function () {
      // 打印响应内容
      console.log(xhr.responseText)
    }

    // 3. 发送请求
    xhr.send()
 // 发送一个带get请求的ajax
    // 1. 创建 ajax 对象
    var xhr = new XMLHttpRequest()

    // 2. 配置请求信息
    //    本次请求携带了三个参数, a 和 b 和 c
    xhr.open('GET', './server/get.php?a=100&b=200&c=300')

    // 3. 接受响应
    xhr.onload = function () {
      console.log(xhr.responseText)
    }

    // 4. 发送请求
    xhr.send(`http://jx.xuzhixiang.top/ap/api/login.php`)
/ 发送一个带POST请求的ajax
    // 1. 创建 ajax 对象
    var xhr = new XMLHttpRequest()

    // 2. 配置请求信息
    xhr.open('POST', './server/post.php')

    // 3. 接受响应
    xhr.onload = function () {
      console.log(xhr.responseText)
    }

    // 4-0. 发送请求之前, 设置一下请求头
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')

    // 4. 发送请求
    xhr.send('d=400&e=500') // 携带了两个参数, d 和 e
    //ajax简单封装
    function getSend(url, cb) {
      // 函数里面接受形参
      //   url => 接受的就是第一个实参, 也就是那个地址
      //   cb => 接受的就是第二个实参, 也就是那个函数
      //     将来我写 cb() 的时候, 就是在调用传递进来的那个函数

      // 1. 创建 ajax 对象
      var xhr = new XMLHttpRequest()

      // 2. 配置请求信息
      xhr.open('GET', url)

      // 3. 接受响应
      xhr.onload = function () {
        // 这里的代码会在请求成功的时候执行
        // 在这里能拿到响应体 xhr.responseText
        cb(xhr.responseText) //=> 在调用传递进来的那个函数
      }

      // 4. 发送请求
      xhr.send()

    }
    
    //   这里我传递进去的函数会在请求成功的时候被调用
    getSend('./xxx.php', function (res) { // 函数定义阶段
      // 这里的代码会在请求成功的时候执行
      // res 接受到的就是响应体
      console.log(res)
    }) // 函数调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值