前端Ajax知识点笔记

openEuler 22.03 LTS SP4离线安装UKUI桌面全攻略(附依赖包下载) 本文提供openEuler 22.03 LTS SP4系统离线安装UKUI桌面环境的完整实战指南。针对无网络环境,详细解析了利用dnf工具下载依赖包、配置离线软件源、处理依赖冲突及安装后优化的全流程,并附带了关键依赖包资源,帮助运维人员高效完成图形化部署。 阅读详情

前端 Ajax 博客知识点笔记

在前端开发中,与服务器进行数据交互是至关重要的环节。Ajax 技术的出现,让网页能够在不重新加载整个页面的情况下,与服务器进行异步通信,从而实现局部刷新,极大地提升了用户体验。下面详细梳理 Ajax 的相关知识点。

一、Ajax 的基本概念

Ajax,即 Asynchronous JavaScript and XML(异步 JavaScript 和 XML),是一种用于创建快速动态网页的技术。它不是一种单一的技术,而是多种技术的组合,包括 JavaScript、XML、HTML、CSS 等。

其核心思想是在不重新加载整个页面的情况下,通过 JavaScript 向服务器发送请求并处理响应,实现网页的局部更新。这使得网页能够更快速地响应用户操作,减少不必要的网络传输,提升交互的流畅性。

二、Ajax 的工作原理

Ajax 的工作流程主要包括以下几个步骤:

  1. 创建 XMLHttpRequest 对象:这是 Ajax 的核心,负责与服务器建立连接并发送请求。
  1. 配置请求:指定请求的方式(GET、POST 等)、URL 以及是否异步等参数。
  1. 设置回调函数:当服务器响应返回时,该函数会被触发,用于处理响应数据。
  1. 发送请求:将请求发送到服务器。
  1. 服务器处理请求并返回响应:服务器接收到请求后,进行处理并返回数据(可以是 XML、JSON、HTML 等格式)。
  1. 处理响应数据:在回调函数中,解析服务器返回的数据,并根据需要更新网页内容。

简单来说,Ajax 就像在浏览器和服务器之间建立了一条秘密通道,浏览器可以通过这条通道悄悄与服务器交换数据,然后只更新页面需要变化的部分,而不是刷新整个页面。

三、核心对象:XMLHttpRequest

XMLHttpRequest(XHR)是实现 Ajax 的关键对象,所有现代浏览器都支持该对象。

1. 创建 XHR 对象

由于不同浏览器的实现存在差异,创建 XHR 对象的方式也有所不同,通常需要进行兼容性处理:


var xhr;

if (window.XMLHttpRequest) {

// 现代浏览器(IE7+、Firefox、Chrome、Safari等)

xhr = new XMLHttpRequest();

} else {

// 兼容IE6及以下版本

xhr = new ActiveXObject("Microsoft.XMLHTTP");

}

2. XHR 对象的常用属性

  • readyState:表示请求的状态,取值范围为 0-4。
    • 0:未初始化,对象已创建但未调用 open () 方法。
    • 1:启动,已调用 open () 方法但未调用 send () 方法。
    • 2:发送,已调用 send () 方法但未收到响应。
    • 3:接收,已收到部分响应数据。
    • 4:完成,已收到全部响应数据,且可以在客户端使用。
  • status:服务器返回的 HTTP 状态码。常见的有 200(请求成功)、404(请求的资源不存在)、500(服务器内部错误)等。
  • responseText:服务器返回的文本数据。
  • responseXML:服务器返回的 XML 数据(如果响应内容是 XML 格式)。

3. XHR 对象的常用方法

  • open(method, url, async):初始化请求。
    • method:请求方式,如 GET、POST 等。
    • url:请求的服务器 URL。
    • async:布尔值,指定请求是否异步,true 为异步,false 为同步(通常使用异步)。
  • send(data):发送请求。data 为发送的数据,GET 请求时一般为 null,POST 请求时为要发送的数据。
  • setRequestHeader(header, value):设置请求头信息,需在 open () 方法之后、send () 方法之前调用。
  • abort():终止当前请求。

4. 常用事件

  • onreadystatechange:当 readyState 属性发生变化时触发,通常在此事件中判断请求是否完成并处理响应。

三、Ajax 的基本使用示例

1. GET 请求


// 创建XHR对象

var xhr = new XMLHttpRequest();

// 配置请求:GET方式,请求的URL,异步

xhr.open('GET', 'https://api.example.com/data?id=1', true);

// 设置回调函数

xhr.onreadystatechange = function() {

// 判断请求是否完成且成功

if (xhr.readyState === 4 && xhr.status === 200) {

// 处理响应数据,这里假设返回的是JSON格式

var response = JSON.parse(xhr.responseText);

console.log('请求成功,数据为:', response);

// 根据数据更新页面

} else if (xhr.readyState === 4) {

console.log('请求失败,状态码:', xhr.status);

}

};

// 发送请求

xhr.send(null);

2. POST 请求


var xhr = new XMLHttpRequest();

xhr.open('POST', 'https://api.example.com/submit', true);

// 设置请求头,POST请求通常需要设置Content-Type

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

var response = xhr.responseText;

console.log('提交成功,响应:', response);

} else if (xhr.readyState === 4) {

console.log('提交失败,状态码:', xhr.status);

}

};

// 发送的数据,格式为key=value&key2=value2

var data = 'name=张三&age=20';

xhr.send(data);

四、Ajax 与 Promise 结合使用

在实际开发中,为了更好地处理异步操作,常将 Ajax 与 Promise 结合使用,避免回调地狱。


function ajaxRequest(method, url, data) {

return new Promise(function(resolve, reject) {

var xhr = new XMLHttpRequest();

xhr.open(method, url, true);

if (method === 'POST') {

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

}

xhr.onreadystatechange = function() {

if (xhr.readyState === 4) {

if (xhr.status === 200) {

resolve(JSON.parse(xhr.responseText));

} else {

reject(new Error('请求失败,状态码:' + xhr.status));

}

}

};

xhr.send(data || null);

});

}

// 使用示例

ajaxRequest('GET', 'https://api.example.com/data?id=1')

.then(function(response) {

console.log('请求成功,数据:', response);

})

.catch(function(error) {

console.log('请求失败:', error.message);

});

五、常见应用场景

  1. 数据加载:在页面滚动时加载更多数据,如社交媒体的无限滚动列表。
  1. 表单提交:无需刷新页面即可提交表单,并实时显示提交结果,如登录、注册表单。
  1. 实时搜索:用户输入关键词时,实时从服务器获取匹配的搜索结果并显示。
  1. 数据更新:在不刷新页面的情况下,更新页面中的部分数据,如实时显示股票价格、天气信息等。

六、Ajax 的优缺点

优点

  1. 提升用户体验:无需刷新整个页面,减少等待时间,操作更流畅。
  1. 减少网络传输:只传输需要的数据,降低带宽消耗。
  1. 异步通信:在等待服务器响应时,浏览器可以继续处理其他操作,不阻塞用户交互。

缺点

  1. 破坏浏览器后退功能:由于 Ajax 更新的是页面局部内容,浏览器的后退按钮可能无法正确回退到之前的状态。
  1. 对搜索引擎不友好:搜索引擎通常无法识别通过 Ajax 加载的内容,可能影响网站的 SEO。
  1. 存在跨域限制:出于安全考虑,浏览器限制了 Ajax 的跨域请求,需要通过特定方式解决(如 CORS、JSONP 等)。

七、跨域问题及解决方法

由于浏览器的同源策略(协议、域名、端口都相同才视为同源),Ajax 请求通常只能访问同源的资源,当请求不同源的资源时,就会出现跨域问题。

常见的解决跨域问题的方法:

  1. CORS(Cross-Origin Resource Sharing,跨域资源共享):这是目前最常用的方法,需要服务器端进行配置,在响应头中添加 Access-Control-Allow-Origin 等信息,允许指定的域名访问资源。
  1. JSONP(JSON with Padding):利用 script 标签没有跨域限制的特性,通过动态创建 script 标签,将请求的 URL 作为 src 属性,服务器返回一段包含数据的 JavaScript 函数调用。但 JSONP 只支持 GET 请求。
  1. 代理服务器:在同源的服务器端设置一个代理,前端请求代理服务器,代理服务器再请求跨域的目标服务器,然后将结果返回给前端。

八、使用 Ajax 的注意事项

  1. 处理错误情况:要考虑请求失败、服务器错误等情况,给用户友好的提示。
  1. 避免频繁请求:频繁的 Ajax 请求会增加服务器负担,影响性能,可以通过防抖、节流等方式优化。
  1. 考虑浏览器兼容性:虽然现代浏览器都支持 XMLHttpRequest,但在处理一些旧版本浏览器时,可能需要进行兼容性处理。
  1. 安全性:要注意防范 XSS(跨站脚本攻击)、CSRF(跨站请求伪造)等安全问题,如对用户输入的数据进行验证和过滤,使用 token 等方式验证请求的合法性。

总之,Ajax 是前端与服务器进行数据交互的重要技术,掌握其基本原理和使用方法,能够开发出更具交互性和用户友好性的网页应用。在实际开发中,还可以结合 jQuery 的 Ajax 方法、Axios 等库,简化 Ajax 的使用流程。

基于4G cat.1的低功耗车牌识别摄像头模组介绍 在消费类摄像头领域,4G低功耗相机已经非常普遍,在可视门锁,婴儿看护,户外监控等领域都获得了很好的应用.但是在工业领域,低功耗相机的应用还不是那么广泛.这里要介绍一款基于4G cat.1的低功耗车牌识别摄像头模组,在待机状态只有MCU和毫米波雷达以1Hz的频率工作,功耗低至500uA,并可以通过4G模块远程唤醒模组. 阅读详情

相关推荐

全面的前端技术课程笔记:JavaScript深度学习指南

JavaScript是一种轻量级的编程语言,被广泛用于网页交互和前后端数据处理。它具备了面向对象、函数式等多种编程范式的特点,是现代Web开发不可或缺的一部分。面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”来设计软件。对象可以包含数据(以字段表示)和代码(以方法表示),数据与代码一起描述了一个对象的行为和属性。封装:将数据(属性)和操作数据的方法绑定在一起,构成一个对象。继承:允许一个对象获得另一个对象的属性和方法。

weixin_29215509的博客 818

AJAX(一)版本兼容性、XHR请求、GET 还是 POST?async= True 或 False?

AJAX(一)版本兼容性、XHR请求、GET 还是 POST?async= True 或 False? 文章目录AJAX(一)版本兼容性、XHR请求、GET 还是 POST?async= True 或 False?1. AJAX简介什么是 AJAXAJAX 工作原理AJAX是基于现有的Internet标准2. 创建 XMLHttpRequest 对象(兼容性)3. 向服务器发送请求(XHR请求)GET 还是 POST?GET 请求(URL)POST 请求(setRequestHeader(*header

qq_43456781的博客 816

Okta身份管理实战指南

本书深入讲解Okta平台的核心功能与实际应用,涵盖用户生命周期管理、单点登录、自适应多因素认证及API访问控制。通过清晰的步骤和真实场景,帮助IT管理员、安全专家和系统集成商高效构建安全的身份管理体系。无论是初学者还是资深从业者,都能从中掌握自动化配置、组规则设置、Okta Workflows集成等关键技能。书中还涵盖高级主题如Advanced Server Access与基础设施自动化,助力企业实现以身份为中心的安全架构。结合Okta Expression Language等工具,读者可灵活实现属性映射与策略定制,全面提升组织的安全性与运营效率。

JavaWeb开发知识总结(Ajax,JSON)

JavaWeb开发知识总结-Ajax,JSON

Somnus blog 1526

axios中get和post以及async和await

# async作为一个关键字放到函数前面 async function queryData() { # await关键字只能在使用async定义的函数中使用 await后面可以直接跟一个 Promise实例对象 var ret = await new Promise(function(resolve, reject){ setTimeout(function(){ resolve('nihao') },...

jilihui2003的博客 2498

使用ajax async,Ajax请求async有哪些方式?应该如何使用

这次给大家带来Ajax请求async有哪些方式?应该如何使用,Ajax请求async的注意事项有哪些,下面就是实战案例,一起来看一下。test.html代码:asy.js代码:function testAsync(){var temp;$.ajax({async: false,type : "GET",url : 'tet.php',complete: function(msg){alert('c...

weixin_30590247的博客 8494

慕课网前端就业班笔记ajax知识点

什么是Ajax? Ajax是一种在无需加载整个网页的情况下,能够更新部分网页的技术。它是几种原有技术的结合体。 Ajax的优点: 1.异步模式->提升用户体验 原因:Javascript是单线程语言,异步方式通讯不需要打断用户操作(不需要等待服务器数据库是否写入),使得响应能力大大提高。因此能够提升用户体验。 2.因为浏览器与服务器之间的传输得到优化,所以一些不必要的数据往返就被减少了,从而...

qq_39482295的博客 510

Web前端最全CSDN学习神器——CSDN浏览器助手测评体验,非常适合收藏的前端进阶重难点笔记

其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)《前端开发四大模块核心知识笔记》最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

2401_84435192的博客 546

前端300道常见面试题,前端找工作必备_前端面试题,2024年前端面试题

但两者在参数上有区别的。对于第一个参数意义都一样,但对第二个参数:?Ajax 并不算是一种新的技术,全称是 asynchronous javascript and xml,可以说是已有技术的组合,主要用来实现客户端与服务器端的异步通信效果,实现页面的局部刷新,早 期的浏览器并不能原生支持 ajax,可以使用隐藏帧(iframe)方式变相实现异步效果,后来的浏览器提供了对 ajax 的原生支持。有的网站展示它,有的则收集它,有的寻求,有的操作, 还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。

m0_60732644的博客 881

学习笔记-目录

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34160277的博客 96

Web前端最全程序员创业第一步:如何获取第一笔风险投资,2024年最新阿里面试几轮 p7

公司简介通常是1~3段篇幅,要简洁,包括:1、一段自我介绍文字(特别是你认识投资人或者被引荐给投资人时)2、非常直接的描述公司的产品、团队和业务3、总结,下一步需要什么。

xcbyaya的博客 1037

java+mysql+html+css+javaScript+jsp+Mybatis+jquery+ajax+Maven+vue+Spring+SpringMVC+php学习笔记

本人的java+mysql+html+css+javaScript+jsp+Mybatis+jquery+ajax+Maven+vue+Spring+SpringMVC+php学习笔记,使用与初学者,有需要的可以看看。

m0_37969491的博客 425

2024年前端最新2024最新Web前端经典面试试题_前端面试题,2024年最新2024大厂前端面试集合

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】世界上只有一种真正的英雄主义就是在认清生活真相之后仍然热爱它JavaScript常见面试题集JavaScript类型this关键字什么是闭包(closure),为什么使用闭包?说说你对 AMD 和 CommonJS 的了解。请解释原型继承(prototypal inheritance)的工作原理。请解释事件委托(event delegation)null、undefined和未声明变量之间有什么区别?如何检查判断这些状态值?

2401_84433974的博客 284

2024年前端最新jQuery学习笔记,web前端开发资料

其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)《前端开发四大模块核心知识笔记》最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

2401_84438160的博客 1086

ajax async异步

async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程和ajax块后面的脚本(另一个线程)例: $.ajax({ type:"POST",

敲键盘的猫 2924

Ajax请求中的属性async(同步异步)作用

在jquery的ajax中如果我们希望实现同步或者异步我们可以直接设置async发生为真或假即可true false $.ajax({ async: false, type : "GET", url : 'tet.php', complete: function(msg){ alert('complete

VIProgram的博客 4219

Ajax请求中async属性

遇到了一个ajax,看到了一个属性,async,是用来设置同步执行,或者是异步执行的举一个例子:$.ajax({ async: false, type : "post", url : "haha", datatype : 'json', success : function(data) { } }); alert("执行");当async属性的值为true时是同步...

雪小白 6万+

ajax最好要加async

//查要修改的规则项记录_begin         $.ajax({         type: "GET",             url: "../compRuleType/queryRuleTypeForUpdate",             data:"id="+id,             async:false,             dataType: "js

ysxybyb的博客 370

ajax请求中的async属性

ajax请求中的async属性 在使用ajax请求后台数据赋值给变量时经常会遇到明明请求成功拿到数据了,其他方法使用该变量时却没有值。这是因为上一个请求还没来得及给该变量赋值,就被下一个方法使用了,导致拿不到值。 这时,可以通过ajax请求中的async属性来设置同步请求和异步请求 async. 默认是true,即为异步方式,.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发.ajax执行后,会继续执行a

qq_45603855的博客 1万+
上一篇: 前端promise知识点笔记
下一篇: 前端Axios知识点笔记
ymt1010
博客等级 码龄1年 15粉丝 3原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值