美文网首页
Ajax原生实现

Ajax原生实现

作者: 再见噜噜班 | 来源:发表于2019-12-26 20:19 被阅读0次

来自百度百科:Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
Ajax = 异步 JavaScript 和 XML 或者是 HTML(标准通用标记语言的子集)。
Ajax 是一种用于创建快速动态网页的技术。
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

原生实现

1.获取XMLHttpRequest对象
使用 XMLHttpRequest(XHR)对象可以与服务器交互。您可以从URL获取数据,而无需让整个的页面刷新。这允许网页在不影响用户的操作的情况下更新页面的局部内容。在 AJAX 编程中,XMLHttpRequest 被大量使用。
更多详情请移步MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest

    let xhr
    if (window.XMLHttpRequest) {
        //应用于所有新版本的浏览器
        xhr = new XMLHttpRequest()
    } else if (window.ActiveXObject) {
        //兼容老版本浏览器
        xhr = new ActiveXObject("Microsoft.XMLHTTP")
    }

2.配置请求参数
XMLHttpRequest对象的open方法用于配置参数,第一个参数为请求方法,第二个参数是请求地址,第三个参数是是否异步请求,默认为true

xhr.open('GET', '/test/', true)

3.配置完毕,用send方法发送请求

xhr.send()

4.监听服务器返回状态并对返回数据进行处理,onreadystatechange事件用于监听

       xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {// readyState为4表示请求响应完成
                if (xhr.status === 200) {    // status为200表示请求成功
                    console.log('执行成功');
                } else {
                    console.log('执行出错');
                }
            }
        }

关于readystate和status
1.readystate有5种值,分别为:

  • 0: 请求未初始化
  • 1: 服务器连接已建立
  • 2: 请求已接收
  • 3: 请求处理中
  • 4: 请求已完成,且响应已就绪

2.status可以分为5类,分别为:

  • 1xx: 这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束
  • 2xx:这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。例如200标识OK
  • 3xx:这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。
  • 4xx:这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。例如404 Not Found
  • 5xx,6xx:这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。例如500 Internal Server Error

完整的实现代码是:

    let xhr
    //1.获取XMLHttpRequest对象
    if (window.XMLHttpRequest) {
        //应用于所有新版本的浏览器
        xhr = new XMLHttpRequest()
    } else if (window.ActiveXObject) {
        //兼容老版本浏览器
        xhr = new ActiveXObject("Microsoft.XMLHTTP")
    }

    //2.配置请求参数
    if (xhr) {
        xhr.open('GET', '/test/', true)
        //3.配置完毕,用send方法发送请求
        xhr.send()
        //4.监听服务器返回状态并对返回数据进行处理,onreadystatechange事件用于监听
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {
                if (xhr.status === 200) {    
                    console.log('执行成功');
                } else {
                    console.log('执行出错');
                }
            }
        }
    }

相关文章

  • Ajax

    标签: Ajax 正文 一、实现一个原生Ajax 二、Ajax状态 三、将原生的 ajax 封装成 promise

  • 原生js实现ajax及get post方法

    @拭目以待:首发于原生js实现ajax及get post方法 ajax原生实现,含 post与get方法。原码如下...

  • 原生js实现Ajax

    原生js实现Ajax方法:var Ajax={get: function(url, fn) { var xhr =...

  • Ajax原生实现

    onreadystatechange事件:必须定义在open()之前 检测XHR的readyState属性,每次变...

  • Ajax原生实现

    来自百度百科:Ajax 即“Asynchronous Javascript And XML”(异步 JavaScr...

  • 前端基础知识-示例代码

    1、ajax 2、jsonp a、原生实现方式 b、jquery ajax: c、vue.js d、npm包jso...

  • 手写Ajax(JSONP)

    参考:原生 JavaScript 实现 AJAX、JSONP XMLHttpRequest的使用 参考:XMLHt...

  • ,汇总

    1、原生ajax实现步骤,ajax怎么实现跨域? 第一步:获得XMLHttpRequest对象 第二步:设置状态监...

  • ajax和fetch的区别

    一、Ajax Ajax的本质是使用XMLHttpRequest对象来请求数据,下面简单贴下原生js实现: 二、fe...

  • Ajax原生

    // 简单的ajax原生实现 var url = 'https://hq.tigerbrokers.com/fun...

网友评论

      本文标题:Ajax原生实现

      本文链接:https://www.haomeiwen.com/subject/xwvloctx.html