0

0

AJAX使用中的异步同步请求怎么实现

php中世界最好的语言

php中世界最好的语言

发布时间:2017-12-04 13:43:45

|

3122人浏览过

|

来源于php中文网

原创

这次的教程是在ajax中,异步同步的请求怎么实现,我们知道,formdata类型、事件监听接口都是需要ajax来实现的,那么有没有办法在页面数据变动时,只向服务器请求新的数据,并且在阻止页面刷新的情况下,动态替换页面中展示的数据呢?今天就来说一下ajax这个概念。

XMLHttpRequest 对象

  XMLHttpRequest只是一个JavaScript对象,确切的说,是一个构造函数。换句话说,它一点也不神秘,它的特殊之处只在于它是由客户端(即浏览器)提供的(而不是JavaScript原生的),除此之外,它有属性,有方法,需要通过new关键字进行实例化,我们只需掌握它们就好;

XMLHttpRequest 之 获取数据

  我们知道AJAX用来在项目中以阻止页面刷新的方式获取数据,那么数据从哪里来呢?我们又怎么知道如何获取这些数据?答案是我们通常使用API与各式各样的数据库交互。

  “API”是“Application Programming Interface”(即:应用程序接口)的缩写,你可以想象一些数据是开放的并且在等待被使用,而我们获取这些数据的方式便是使用API。API通常的形式是一个URL,并提供指定的参数名和参数值用来帮助你定位所要获取的数据。

XMLHttpRequest 之 准备请求

要想与服务器交互,首先需要思考以下问题:

我们是要获取数据还是存储数据? —— 表现为请求方式是“GET”还是“POST” 向哪里发出请求?        —— 即相应的API地址 以何种方式等待相应?      —— 有“同步”和“异步”两种选择

而XMLHttpRequest实例的.open()方法的作用就是用来回答以上三个问题。.open()方法接收三个参数:请求方式,请求URL地址和是否为异步请求的布尔值。

下面是一个.open()方法调用的例子:

// 该段代码会启动一个针对“example.php”的GET同步请求。

xhr.open("get", "example.php", false)

// “DELETE”、“HEAD”、“OPTONS”、“PUT”也可以作为open()方法的第1个参数。

  上面的代码中,通过传递第三个参数为false实现同步。要注意的是:一旦设置为同步,那么send()方法将阻塞直到请求完成。 

(三)同步请求与异步请求

  人们通常认为AJAX是异步的,实际上并非如此,AJAX是避免页面在获取数据后刷新的一种技术,至于等待服务器响应的方式是同步还是异步,需要开发人员结合业务需求进行配置(虽然通常是异步的)。

  你可能会好奇,什么时候我们需要使用同步的AJAX?就我个人经验而言,似乎很难找到相应的场景。

  最后我们再简单解释一下“同步”等待响应与“异步”等待响应的区别:“同步”意味着一旦请求发出,任何后续的JavaScript代码不会再执行,“异步”则是当请求发出后,后续的JavaScript代码会继续执行,当请求成功后,会调用相应的回调函数。 

XMLHttpRequest 2级 之 FormData类型

  W3C提出了XMLHttpRequest 2级规范,虽然并非所有的浏览器都实现了该规范所规定的内容,但还是有一些内容被全部或大多数浏览器所实现。

FormData 类型

  FormData是XMLHttpRequest 2级为我们提供的新的数据类型(构造函数),还记的如何伪装一个POST请求为一个表单提交吗?FormData令这一过程变得更加轻松,因为XHR2对象能够识别传入的数据类型是FormData的实例,并自动配置适当的头部信息。

如何伪装一个POST请求为一个表单提交?

当使用POST方法提交这种顺序的表单数据时,必须设置“Content-Type”请求头为这个值。

外贸中英文双语企业网站管理系统2025.7.21
外贸中英文双语企业网站管理系统2025.7.21

外贸中英繁三语企业网站管理系统是一套专为外贸企业建站首选的信息网站管理系统,中英繁三种语言同步更新模板风格宽频页面十分大方。宁志网站管理系统是国内知名建站软件,它由技术人员开发好了的一种现成建站软件,主要为全国各外贸企业,事业单位、企业公司、自助建站提供方便。网站系统无复杂的安装设置要求,适合广大工作人员使用。特点:安全、稳定、美观、实用、易操作...

下载

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

注意:当使用form时,这不是必需值,因为这是默认方法。

FormData的使用方式如下:

// 添加数据
let data1 = new FormData()
data1.append("name", "Tom")
xhr.send(data1)
 
// 提取表单数据
let data2 = new FormData(document.forms[0])
xhr.send(data2)

  除此之外,FormData的另一个好处是相较于传统的AJAX请求,它允许我们上传二进制数据(图片,视频,音频等)。

FormData的浏览器兼容性。

桌面端  IE 10+ 与其他浏览器均支持

移动端  Android,Firefox Mobile,OperaMobile均支持,其余浏览器未知

XMLHttpRequest 2级 之 事件监听接口

XMLHttpRequest第一版,只能对onreadystatechange这一个事件指定回调函数。该事件对所有情况作出响应。

XMLHttpRequest第二版允许对更多的事件指定回调函数。

onloadstart   请求发出  

onprogress     正在发送和加载数据  

onabort        请求被中止,比如用户调用了abort()方法  

onerror        请求失败  

onload      请求成功完成  

ontimeout    用户指定的时限到期,请求还未完成  

onloadend      请求完成,不管成果或失败

相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

相关阅读:

前端的js框架总结以及用途讲解

怎样解决ajax在解析json数据时单位秒的形式

h5里js和servlet实现文件上传的实现步骤

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号