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日

相关文章

  • 给jQuery方法添加回调函数一款插件的应用

    给 jQuery 方法添加回调函数是一种非常常见的需求。jQuery 插件是一种已经封装好的 JavaScript 代码包,可以给网站开发者提供大量的便利。因此,编写一个 jQuery 插件以便将回调函数添加到 jQuery 方法中是一项非常有用和有趣的任务。 下面是编写 “addCallback” 插件的完整攻略: 1. 编写 HTML 文件 首先,我们需…

    jquery 2023年5月27日
    00
  • jQWidgets jqxComboBox showCloseButtons属性

    以下是关于“jQWidgets jqxComboBox showCloseButtons属性”的完整攻略,包含两个示例说明: 简介 jqxComboBox 控件提供了 showCloseButtons 属性,该属性用于控制下列表中每个选项的关闭按钮是否显示。通过使用 showCloseButtons 属性,可以在代码中控制下拉的行为。 详细攻略 以下是 jq…

    jquery 2023年5月11日
    00
  • jQWidgets jqxInput rtl属性

    jQWidgets jqxInput rtl属性攻略 简介 jQWidgets 是一个基于 jQuery 的 UI 组件库,提供丰富的 UI和工具用于创建现代化应用程序。jqxInput 组件用于创建一个文本输入框本攻略详细介绍 jqxInput 组件 rtl 属性,包括如何使用和示例。 使用 jqxInput 组件的 rtl 属性用于设置文本输入框的文本方…

    jquery 2023年5月10日
    00
  • angular js和jquery的区别

    AngularJS和jQuery都是流行的JavaScript框架,但它们的目标和用途不同。下面是它们之间的区别: 1. 框架的复杂度 AngularJS是一款完备的MVC框架,它的核心概念是双向数据绑定、依赖注入和模板指令。AngularJS包含了很多技术概念和构建应用程序所需的预设结构,因此在学习曲线上比较陡峭。 jQuery是一个轻量级的JavaScr…

    jquery 2023年5月13日
    00
  • 如何检测DIV的尺寸变化

    检测 DIV 尺寸变化的方法有很多,本文将介绍其中两种常用的方法。 方法一:利用 ResizeObserver 监听 ResizeObserver 是现代浏览器提供的一种监听元素尺寸变化的 API,支持监听多个 DOM 元素的尺寸变化。你只需要实例化一个 ResizeObserver,然后调用 observe() 方法传入需要监听的 DOM 元素,当元素的尺…

    jquery 2023年5月12日
    00
  • 如何在jQuery中获得鼠标指针的位置

    要在jQuery中获取鼠标指针的位置,可以使用event.pageX和event.pageY属性或event.clientX和event.clientY属性。以下是使用jQuery获取鼠标指针位置的完整攻略: 步骤一:创建HTML结构 首先需要创建包含鼠标指针位置的HTML结构。以下是一个例子: <!DOCTYPE html> <html&…

    jquery 2023年5月9日
    00
  • JQuery 选择器、过滤器介绍

    JQuery 选择器、过滤器介绍 JQuery是一种快速、简洁、功能丰富的JavaScript库,它简化了HTML文档的遍历和操作、事件处理、动画效果和Ajax交互等操作。其中选择器和过滤器是JQuery中最为常用的功能之一。本文将从JQuery选择器、过滤器的基础概念、使用方法以及示例展示等多个方面对其进行详细介绍。 1. 基础概念 1.1 选择器 选择器…

    jquery 2023年5月27日
    00
  • jQWidgets jqxChart borderLineColor属性

    jQWidgets 的 jqxChart 组件提供了 borderLineColor 属性,用于设置图表边框线的颜色。本文将详细介绍 borderLineColor 属性的使用方法,包括概述、示例以及注意事项。 borderLineColor 属性概述 borderLineColor 属性用于设置图表边框线的颜色。可以将该属性设置为任何有效的 CSS 颜色值…

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