首页 > 其他分享 >第六篇 手写原理代码 - 对象 【 实现 AJAX 请求 】

第六篇 手写原理代码 - 对象 【 实现 AJAX 请求 】

时间:2023-04-11 23:25:46浏览次数:42  
标签:status XMLHttpRequest xhr AJAX fail responseText 手写 第六篇

AJAX 是 Asynchronous JavaScript and XML 的缩写,指的是通过 JavaScript 和 XML 技术在不重新加载整个页面的情况下,实现与服务器之间异步通信的技术。使用 AJAX 技术能够使网页更加动态和用户友好。

JavaScript 的 AJAX 技术借助于浏览器内置的 XMLHttpRequest 对象实现。XMLHttpRequest 对象是一个用于从 web 服务器获取数据的 API。使用 AJAX 技术,我们可以通过 XMLHttpRequest 发送请求,接收服务器返回的数据,并根据需要更新网页中的部分内容,而无需刷新整个页面。这种方式对于提高网站的性能和用户体验非常有帮助

总之,AJAX 是 JavaScript 中一种异步通信技术,通过 XMLHttpRequest 对象实现。使用 AJAX 技术能够使网页更加动态和用户友好

实现一个 AJAX 请求

const ajax = {
  get(url, sucess, data = null, fail) {
    const xhr = new XMLHttpRequest(); //
    xhr.open("GET", url, true); // true 是否异步
    xhr.onreadystatechange = () => {
      if (xhr.readyState === 4) {
        if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
          sucess(xhr.responseText);
        } else {
          fail(xhr.responseText);
        }
      }
    };
    xhr.send(data);
  },

  post(url, data = null, success, fail) {
    const xhr = new XMLHttpRequest(); // new 一个请求对象
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.onreadystatechange = () => {
      if (xhr.readyState === 4) {
        if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
          success(xhr.responseText);
        } else {
          fail(xhr.responseText);
        }
      }
    };
    xhr.send(data);
  },
};

标签:status,XMLHttpRequest,xhr,AJAX,fail,responseText,手写,第六篇
From: https://www.cnblogs.com/caix-1987/p/17308239.html

相关文章

  • 第五篇 手写原理代码 - 对象 【 实现 new 过程、实现 instanceof 】
    在JavaScript中,new关键字用于创建一个对象实例,它通常与构造函数一起使用。当使用new关键字时,会发生以下几件事情:1、创建一个新对象,并将该对象的属性设置为构造函数的原型(即__proto__)2、将构造函数的作用域绑定到新对象上,并执行构造函数中的代码3、如果构造函数返......
  • 第七篇 手写原理代码 - 对象 【 实现对象的深度拷贝、实现对象的深度对比 】
    在JavaScript中,对象拷贝可以分为浅拷贝和深拷贝两种方式1、浅拷贝浅拷贝只是复制了对象的引用地址,新对象的属性与原对象的属性指向同一块内存地址2、深拷贝深拷贝会完整地复制对象以及其内部所有嵌套对象使用JSON.parse(JSON.stringify())方法进行深拷贝......
  • 第九篇 手写原理代码 - 数组 【 实现 forEach、map、filter、every、some 】
    1、forEachArray.prototype.my_forEach=function(callback){for(leti=0;i<this.length;i++){callback(this[i],i,this);}};2、mapArray.prototype.my_map=function(callback){constarr=[];for(leti=0;i<this.length;......
  • 第八篇 手写原理代码 - 对象 【 实现 Object.assign() 和 Object.create() 】
    1、Object.assign(target,...sources)Object.assign()方法用于将一个或多个源对象的属性复制到目标对象中。它只复制源对象自身可枚举的属性,同时也能够拷贝getter和setter函数2、Object.create(proto[,propertiesObject])Object.create()方法创建一个新对象,使......
  • 自己手写一个js的双向绑定
    今天研究了一下JS的双向绑定。发现这东西最核心的是浏览器内置的Object.defineProperty方法或者Object.defineProperties,前者只能定义对象的一个属性与相应的元素进行绑定,后者可以定义一组进行绑定。不废话了,直接上代码://代码的效果:定时修改对象中的message属性值,然后页面的H1......
  • PAC主成分分析__784手写特征案例
    fromsklearn.neighborsimportKNeighborsClassifierasKNNfromsklearn.decompositionimportPCAfromsklearn.ensembleimportRandomForestClassifierasRFCimportmatplotlib.pyplotaspltfromsklearn.model_selectionimportcross_val_scoreimportpandasas......
  • js:浏览器跨域ajax变通实现 -- flash + js + crossdomain.xml
    使用此方式能很好解决这个问题,因为考虑了php中转形式的双倍时间和莫须有的访问,不是很愿意用,除非不得已,现在找到flash的实现方法,对于能自按的服务器来说这是不错的解决方案,只需要担心的是有人不愿意安装flash控件,且能解决script方式的不能post不足,除非浏览器已经统一支持跨......
  • Web开发|AJAX学习
    IE|FireFox|Chrome,AJAX引擎运行方式的对比AJAX引擎的核心是XMLHttpRequest对象。而不同的浏览器创建XMLHttpRequest对象的方法是有差异的。IE浏览器使用ActiveXObject,而其他的浏览器使用名为XMLHttpRequest的JavaScript内建对象。XMLHttpRequest得到了所有现代浏览器较好的......
  • 手写数字识别-paddle版
    平台https://www.paddlepaddle.org.cn/环境变量#路径data_dir='../data'model_dir='inference_model'base_dir='{}/{}'.format(data_dir,model_dir)#模型名称model_name='minist'model_file='{}/{}'.format(bas......
  • vue 手写分页
       data:{        crossing_status:CROSSING_STATUS,        crossing_list:[],        time:null,        log:{          page:1,          pages:......