一、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属性指定一个回调函数来处理服务器响应。可以通过判断readyStatestatus属性来确定请求的状态和是否成功。当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. jQuery 在图片和文字中插入内容(多种情况考虑)

    昨天接到一个新的需要,在后台文章编辑器中,每一个文章的正文前面,可以单独添加一个电头字段,但是如果在富文本编辑器中最上面就添加图片的话,图片就会把电头和正文中的文字给隔开.需要做的是获取到电头字段,然 ...

  2. TEMP_FAILURE_RETRY宏的用法

    #define TEMP_FAILURE_RETRY(expression) \     (__extension__\      ({ long int __result;\          do ...

  3. 快速上手Linux核心命令(八):网络相关命令

    目录 前言 测试主机之间网络是否联通 ifconfig 配置或显示网络信息 route 显示或管理路由表 netstat 查看网络状况 telnet 远程登录主机 ssh 安全的远程登录主机 wget ...

  4. Spring之AOP理解及使用

    文章目录 AOP是什么 AOP Spring的通知类型 1.Before通知 2. AfterReturning通知 3.AfterThrowing通知 4. After通知 5. Around通知 ...

  5. Pytorch数据操作

    1.Pytorch中tensor的生成与访问 可以使用arange()创建一个张量:如,torch.arange(12)创建0开始的前12个整数: 除非特殊指定,否则新的张量将存放在内存中,并采用CP ...

  6. UML类图——类之间的关系

    关联关系(实线箭头) 是一种结构化关系,表示一类对象与另一类对象之间有联系.Java,c++,c#等编程语言在实现关联关系时,通常将一个类的对象作为另一个类的属性 - 双向关联 - 单向关联 - 自关 ...

  7. websocket与C# socket相互通信

    web端代码就是js代码,C#有两种方式:使用第三方库,如Fleck,使用C#原生socket编程实现   web端: <!doctype html> <html lang=&quo ...

  8. SqlParameter的作用与用法

    有时候为图方便,会直接用sqlhelper文件进行相关操作,会出现如下的类: public static object ExecuteScalar(string sqlStr, params SqlP ...

  9. 2020-12-01:java中,什么是安全点和安全区域?

    福哥答案2020-12-04: 安全点用户线程暂停,GC 线程要开始工作,但是要确保用户线程暂停的这行字节码指令是不会导致引用关系的变化.所以 JVM 会在字节码指令中,选一些指令,作为"安 ...

  10. linux DHCP

    目录 一.DHCP概念 二.DHCP工作过程 三.DHCP实验 一.DHCP概念 概念:动态主机配置协议,自动为计算机分配tcp/ip参数 DHCP的优点:1.减少管理员的工作难度 2.避免错误的可能 ...