javascript实现简单的ajax封装示例

下面是关于“javascript实现简单的ajax封装示例”的完整攻略。

什么是Ajax

Ajax(Asynchronous JavaScript and XML)指异步地使用JavaScript进行XMLHttpRequest(XHR)的一套技术方案。通过Ajax,我们可以在当前页面无需刷新的情况下向服务器发起请求并获取数据,从而更新页面展示。

实现Ajax封装示例

一般情况下,我们在使用Ajax前需要通过js代码创建一个XMLHttpRequest对象实例,然后向服务器发起请求,等待服务器响应并获取到数据后再将其展示在页面上。在这个过程中,步骤繁琐且代码重复量较大,容易引起混淆。因此,我们可以将这些步骤进行封装,以提高开发效率和代码可读性。

一般情况下,我们使用Ajax时需要对以下三个事件进行监听:

  1. onreadystatechange:当readyState属性发生改变时触发;
  2. ontimeout:当请求超时时触发;
  3. onerror:当请求发生错误时触发。

具体实现过程如下:

/**
 * @function ajax
 * @param {string} url 请求地址
 * @param {object} options 请求参数
 * @returns {Promise} 返回Promise对象
 */

function ajax(url, options) {
  return new Promise((resolve, reject) => {
    let xhr = new XMLHttpRequest();
    xhr.responseType = options.responseType || 'text';
    xhr.timeout = options.timeout || 10000;

    xhr.onreadystatechange = function () {
      if (xhr.readyState === 4) {
        if (xhr.status === 200) {
          resolve(xhr.response);
        } else {
          reject(xhr);
        }
      }
    }

    xhr.onerror = function () {
      reject(xhr);
    }

    xhr.ontimeout = function () {
      reject(new Error('请求超时'));
    }

    // 组装请求参数并发起请求
    let params = null;
    if (options.method === 'GET') {
      params = options.data || null;
      xhr.open('GET', `${url}?${params}`, true);
      xhr.send();
    } else if (options.method === 'POST') {
      params = typeof options.data === 'string' ? options.data : JSON.stringify(options.data || {});
      xhr.open('POST', url, true);
      xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
      xhr.send(params);
    }
  });
}

在上述代码中,我们将ajax请求进行了封装,并返回了一个Promise对象。开发者可以使用该方法方便地调用Ajax请求并获取数据。

示例

下面我们通过两个示例来演示如何使用上述ajax方法封装:

示例1:GET请求

ajax('https://jsonplaceholder.typicode.com/todos/1', {
  method: 'GET',
  responseType: 'json'
}).then(res => {
  console.log(res);
}).catch(err => {
  console.error(err);
});

在上述代码中,我们使用ajax方法发起了一个GET请求,请求的url地址为 https://jsonplaceholder.typicode.com/todos/1,请求参数为空,timeout设置为10000ms,返回数据的类型为json格式。当请求成功后,我们打印了响应数据;当请求失败时,我们打印了错误信息。

示例2:POST请求

ajax('https://jsonplaceholder.typicode.com/posts', {
  method: 'POST',
  responseType: 'json',
  timeout: 5000,
  data: {
    title: 'foo',
    body: 'bar',
    userId: 1
  }
}).then(res => {
  console.log(res);
}).catch(err => {
  console.error(err);
});

在上述代码中,我们使用ajax方法发起了一个POST请求,请求的url地址为 https://jsonplaceholder.typicode.com/posts,请求参数为一个对象,timeout设置为5000ms,返回数据的类型为json格式。当请求成功后,我们打印了响应数据;当请求失败时,我们打印了错误信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript实现简单的ajax封装示例 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jQWidgets的jqxWindow宽度属性

    当使用 jQWidgets 插件时,通过使用 jqxWindow 控件可以创建模态或非模态对话框,jqxWindow 控件有许多可用的属性,其中包含控制窗口大小的属性。本文详细讲解 jqxWindow 控件宽度属性的使用方法。 jqxWindow 控件宽度属性 jqxWindow 控件的宽度可以使用 width 属性进行控制,该属性接受一个数字类型的值,用于…

    jquery 2023年5月12日
    00
  • jQuery Mobile面板open事件

    jQuery Mobile是一款前端UI框架,用于构建移动端应用程序,面板是jQuery Mobile中的一个核心组件,它常用于构建应用程序中的侧面导航栏。当面板打开时,我们可以捕获面板的open事件来执行一些自定义的操作。本篇文章将详细讲解如何使用jQuery Mobile面板open事件的整个过程。 一、绑定面板open事件 要在jQuery Mobil…

    jquery 2023年5月12日
    00
  • jQuery 学习第五课 Ajax 使用说明

    下面是“jQuery 学习第五课 Ajax 使用说明”的完整攻略。 一、概述 1.1 什么是 Ajax Ajax(Asynchronous JavaScript and XML)指的是一组用于在客户端与服务器端进行异步数据交互的技术。使用 Ajax 技术的页面,在数据传输过程中不会刷新页面,从而提升了页面的用户体验。 1.2 jQuery 中的 Ajax 在…

    jquery 2023年5月28日
    00
  • jQWidgets的jqxChart切换事件

    jQWidgets 是一个流行的 JavaScript UI 库,提供了许多可定制的 UI 组件。其中一个组件是 jqxChart,它是用于绘制图表的组件。jqxChart 提供多个事件,其中之一是 seriesToggle。下面是关于 jqxChart 的 seriesToggle 事件的详细攻略: seriesToggle 事件概述 seriesTogg…

    jquery 2023年5月11日
    00
  • jQWidgets jqxDataTable rowEndEdit事件

    以下是关于“jQWidgets jqxDataTable rowEndEdit事件”的完整攻略,包含两个示例说明: 简介 jqxDataTable 控件的 rowEndEdit 事件在行编辑完成后触发通过监听事件,在行编辑完成后执行自定义的操作例如保存数据、更新界面等。 整攻 以下是 jqx 控 rowEdit 事件的整攻略: 监听 rowEndEdit 事…

    jquery 2023年5月11日
    00
  • jQWidgets jqxMenu autoCloseOnClick属性

    以下是关于 jQWidgets jqxMenu 组件中 autoCloseOnClick 属性的详细攻略。 jQWidgets jqxMenu autoCloseOnClick 属性 jQWidgets jqxMenu 组件的 autoCloseOnClick 属性用于设置菜单项被点击后是否自动关闭菜单。该属性默认值为 true,表示菜单项被点击后会自动关闭…

    jquery 2023年5月12日
    00
  • jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法

    下面是详细讲解“jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法”的完整攻略。 简介 jQuery Uploadify 是一款常用的上传插件,用于实现文件上传功能。但是在使用过程中,会出现 Http Error 302 错误,导致上传失败。那么,该错误出现的原因是什么,如何解决呢? 出现原因 Http Error 3…

    jquery 2023年5月27日
    00
  • jQuery实现网页拼图游戏

    下面是“jQuery实现网页拼图游戏”的完整攻略: 技术方案 使用HTML和CSS实现游戏页面的布局和样式; 使用jQuery进行DOM操作,实现游戏的拼图效果; 使用JavaScript实现游戏的逻辑,包括拼图验证、计时和计分等功能。 实现步骤 创建游戏页面,包括一个拼图区域和一个工具栏,工具栏中包括开始游戏、暂停游戏、重置游戏、难度选择等按钮; 使用jQ…

    jquery 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部