​

一、Ajax开源库有很多选择,大家可以根据需求自己选择

  1. jQuery:jQuery是一个广泛应用的JavaScript库,它提供了简洁而强大的API来处理Ajax请求。通过$.ajax()方法或其简化的$.get()和$.post()方法,可以轻松地发送异步请求和处理服务器响应。

  2. Axios:Axios是一个基于Promise的现代化HTTP客户端,用于浏览器和Node.js。它提供了简洁的API来处理Ajax请求,支持并发请求、请求拦截、请求取消等功能,使用起来非常方便。

  3. Fetch API:Fetch API是一种现代的原生JavaScript API,用于发起网络请求。它提供了更直接的方式来发送Ajax请求,并且支持Promise,可以更方便地处理异步操作。

  4. Superagent:Superagent是一个流行的HTTP请求库,适用于浏览器和Node.js环境。它提供了链式调用的API,支持各种HTTP方法、文件上传、Cookie管理等功能。

  5. Axios、Fetch API和Superagent都是适用于浏览器和Node.js的通用HTTP请求库,支持跨平台使用。

这只是一小部分常用的Ajax开源库,根据具体需求和项目的特点,你还可以根据功能、性能、维护活跃度等因素选择其他合适的库来处理Ajax请求。甚至自己封装适用自己的Ajax。

二、以下是一个简单的Ajax进行数据请求的方法。

  1. 创建 XMLHttpRequest 对象:在JavaScript中,使用new XMLHttpRequest()来创建一个XMLHttpRequest对象。

  2. 设置请求的参数:使用open()方法设置HTTP请求的方法(GET或POST)和URL。例如,xhr.open('GET', 'http://example.com/data', true)表示使用GET方法发送请求到"http://example.com/data",第三个参数为true表示使用异步请求。

  3. 设置响应处理函数:使用onreadystatechange属性指定一个回调函数来处理服务器响应。可以通过判断readyState和status属性来确定请求的状态和是否成功。当readyState为4且status为200时表示请求成功,可以处理服务器返回的数据。

    xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
    var response = JSON.parse(xhr.responseText); // 处理服务器返回的数据
    // ...
    }
    };

  4. 发送请求:使用send()方法发送请求。对于GET请求,可以将参数附加在URL上,例如,xhr.send(null);对于POST请求,可以将参数作为send()方法的参数发送,例如,xhr.send(data)。
//完整的示例代码如下:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/data', true); xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
// 处理服务器返回的数据
// ...
}
}; xhr.send(null);

注意:由于跨域安全策略限制,Ajax请求只能向同源(即协议、域名和端口都相同)的服务器发送请求。如果需要向不同域的服务器发送Ajax请求,可以使用JSONP、CORS或使用代理服务器等方法解决跨域问题。

那么,如果上面的库你不会使用,甚至说不知道它的原始逻辑,那么,我来教你封装一个简单的Ajax吧,后面再根据自己的需求

底层逻辑

//1.创建对象
let xhq = new XMLHttpRequest()
//2.初始话http请求参数
xhq.open(methode, url, true)
//3.发送请求
xhq.send({
username:'wzx'
})
//4.监听请求状态,执行对应的回调函数
xhq.onreadystatechange = function () {
if ( xhq.readystate == 4 && xhq.status == 200 ) {
// success 回调
success(xhq.responseText)
} else if (xhq.readyState == 4 && xhq.status !== 200) {
// error 回调
error()
}
} //-----------完整实现-----------
function sendAjax(obj) {
function splicStr(data) {// get方式传入时,将内容进行data内容进行拼接
var str = ''
for (var i in data) {
str = i + '=' + data[i]
}
return str
}

原生Ajax实现

// 原生ajax实现 步骤分析
// 一、声明XMLHttpRequest, 为了兼容IE5、6需要使用ActiveXObject()
let xhq = new XMLHttpRequest() // 创建对象
// 二、初始化HTTP请求参数, 只初始化并不会发送
if (obj.method.toUpperCase() === 'GET') { // get方法
xhq.open(obj.method, obj.url + '?' + splicStr(obj.data), typeof obj.async === 'boolean'? obj.async : true) // 路径拼接
xhq.send()// 三、发送此次请求
}
else if (obj.method.toUpperCase() === 'POST') { // post方法
xhq.open(obj.method, obj.url, typeof obj.async === 'boolean'? obj.async : true)
xhq.setRequestHeader("content-type","application/x-www-form-urlencoded") // 以表单提交
xhq.send(obj.data)// 三、发送此次请求
}
//四、监听发送
xhq.onreadystatechange = function () {
if ( xhq.readyState == 4 && xhq.status == 200 ) {
// success 回调
success(xhq.responseText)
} else if (xhq.readyState == 4 && xhq.status !== 200) {
// error 回调
error()
}
}
}
//使用
sendAjax({
url: 'your url',
method: 'post',
async: true,
data: {
username: 'xiong',
pwd: '123'
},
success: function (data) {
console.log(data)
},
error: function () {
console.log('发生了错误')
}
})

再次注意:由于跨域安全策略限制,Ajax请求只能向同源(即协议、域名和端口都相同)的服务器发送请求。如果需要向不同域的服务器发送Ajax请求,可以使用JSONP、CORS或使用代理服务器等方法解决跨域问题。

​

使用Ajax进行数据请求的更多相关文章

  1. Django Ajax提交数据请求

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. Ajax --- 数据请求

    下面主要介绍(JS原生)数据请求的主要步骤: Ajax 数据请求步骤: 1.创建XMLHttpRequest对象 2.准备数据发送 3.执行发送 4.指定回掉函数 第一步:创建XMLHttpReque ...

  3. AJAX 跨域请求 - JSONP获取JSON数据

    Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示 ...

  4. 本地主机作服务器解决AJAX跨域请求访问数据的方法

    近几天学到ajax,想测试一下ajax样例,由于之前在阿里租用的服务器过期了,于是想着让本地主机既做服务器又做客户端,只是简单地测试,应该还行. 于是,下载了xampp,下载网址http://www. ...

  5. VueJS搭建简单后台管理系统框架 (二) 模拟Ajax数据请求

    开发过程中,免不了需要前台与后台的交互,大部分的交互都是通过Ajax请求来完成,在服务端未完成开发时,前端需要有一个可以模拟Ajax请求的服务器. 在NodeJs环境下,通过配置express可访问的 ...

  6. AJAX 跨域请求的解决办法:使用 JSONP获取JSON数据

    由于受到浏览器的限制,ajax不允许跨域通信.如果尝试从不同的域请求数据,会出现安全错误.如果能控制数据驻留的远程服务器并且每个请求都前往同一域,就可以避免这些安全错误.但是,如果仅停留在自己的服务器 ...

  7. ajax数据请求5(php格式)

    ajax数据请求5(php格式): <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  8. ajax数据请求4(xml格式)

    ajax数据请求4(xml格式): <!doctype html> <html> <head> <meta charset="utf-8" ...

  9. ajax数据请求3(数组json格式)

    ajax数据请求3(数组json格式) <!doctype html> <html> <head> <meta charset="utf-8&quo ...

  10. ajax数据请求2(json格式)

    ajax数据请求2(json格式) <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

随机推荐

  1. ILLA Cloud: 调用 Hugging Face Inference Endpoints,开启大模型世界之门

    一个月前,我们 宣布了与 ILLA Cloud 与达成的合作,ILLA Cloud 正式支持集成 Hugging Face Hub 上的 AI 模型库和其他相关功能. 今天,我们为大家带来 ILLA ...

  2. javasec(一)java反射

    这篇文章介绍javasec基础知识--java反射. 0x01 反射是什么? 反射是一种机制,利用反射机制动态的实例化对象.读写属性.调用方法.构造函数. 在程序运行状态中,对于任意一个类或对象,都能 ...

  3. javasec(五)URLDNS反序列化分析

    这篇文章介绍 URLDNS 就是ysoserial中⼀个利⽤链的名字,但准确来说,这个其实不能称作"利⽤链".因为其参数不是⼀个可以"利⽤"的命令,⽽仅为⼀个U ...

  4. ES6 新增数组,对象,字符串的方法

    1,ES6+ 新增数组方法 Array.from Array Array.from(arrayLike[, mapFn[, thisArg]]) 将类数组(伪数组)转换成数组 参数: arrayLik ...

  5. web 页面/内容 触摸/点击滑动

    监听标签的触摸/鼠标滑动事件,添加元素的切换动画,效果如下: 事件监听 鼠标事件和触摸事件监听: 1 componentDidMount() { 2 var teachingReportDiv = d ...

  6. [OpenCV-Python] 11 程序性能检测及优化

    文章目录 OpenCV-Python: 核心操作 11 程序性能检测及优化 11.1 使用 OpenCV 检测程序效率 11.2 OpenCV 中的默认优化 11.3 在 IPython 中检测程序效 ...

  7. Go函数基础

    在Go语言中,函数是一种基本的代码组织方式.函数能够接受输入参数并返回结果.Go语言中的函数有以下特点: 函数定义使用关键字func,后跟函数名.参数列表和返回值类型. 如果函数有返回值,则在函数定义 ...

  8. 第十四届蓝桥杯省赛C++ B组(个人经历 + 题解)

    参赛感受 这是我第一次参加蓝桥杯的省赛,虽然没什么参赛经验,但是自己做了很多前几届蓝桥杯的题,不得不说,这一届蓝桥杯省赛的难度相较于之前而言还是比较大的.之前很流行蓝桥杯就是暴力杯的说法,但是随着参赛 ...

  9. MySQL 中读写分离数据延迟

    MySQL 中读写分离可能遇到的问题 前言 读写分离的架构 基于客户端实现读写分离 基于中间代理实现读写分离 MySQL 中如何保证主从数据一致 循环复制问题 主从同步延迟 主从同步延迟的原因 主从延 ...

  10. 2020-09-07:Docker的四种网络类型?

    福哥答案2020-09-07: 敲docker network ps命令,显示三种模式.1.bridge模式:使用–net =bridge指定,默认设置.桥接式网络模式(默认).容器的默认网络模式,d ...