首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
7.1 调用小部件的两种方式
7.1.1 调用widget()方法使用小部件DatePicker
7.1.2 调用begin()和end()方法使用小部件ActiveForm
7.2 项目实现迭代八:使用ActiveForm小部件替换添加文章视图
7.2.1 调用小部件ActiveForm
7.2.2 “文章标题”文本输入框
7.2.3 “文章栏目”下拉列表框
7.2.4 “文章图片”上传文件输入框
7.2.5 “内容”文本输入域
7.3 自定义小部件
7.3.1 继承Widget
7.3.2 自定义小部件的MVC结构
7.4 项目实现迭代九:自定义首页幻灯片小部件
7.5 项目实现迭代十:分页显示列表页
7.5.1 分页组件Pagination
7.5.2 新闻中心列表页实现数据填充
7.5.3 分页的超链接列表小部件LinkPager
8.1 初识资源包类
8.2 Yii2框架资源管理代码分析
8.2.1 视图中注册资源包类
8.2.2 注册资源文件
8.2.3 输出缓冲区的数据
8.3 AssetBundle类的成员属性
8.4 项目实现迭代十一:本书配套项目实现前端资源管理
8.4.1 实现首页前端资源管理
8.4.2 实现新闻中心列表页前端资源管理
9.1 模型中编写验证规则
9.2 控制器中安全赋值
9.3 控制器中触发验证
9.4 视图中提取错误信息
9.5 项目实现迭代十二:完成“添加文章”页面中的模型验证
10.1 AJAX简介
10.2 传统的JavaScript实现AJAX验证
10.2.1 创建AJAX引擎XMLHttpRequest对象
10.2.2 创建HTTP请求
10.2.3 设置响应HTTP请求状态变化的方法
10.2.4 设置获取服务器返回数据的语句
10.2.5 发送HTTP请求
10.3 jQuery实现AJAX验证
10.4 项目实现迭代十三:完成“添加用户”页面的AJAX验证
11.1 用户登录-表单模型
11.2 用户登录-客户端验证
11.2.1 ActiveForm实现客户端验证代码分析
11.2.2 项目实现迭代十四:完成登录页面的客户端验证
11.3 模型中的自定义方法作为rules()验证器
11.4 用于验证用户名和密码的身份类UserIdentity
11.5 项目实现迭代十五:完成用户登录
11.6 保存用户登录状态的yii\web\User类
12.1 访问控制技术综述
12.2 RBAC简介
12.3 RBAC需求分析及功能概述
12.4 项目实现迭代十六:最简方式实现RBAC
12.4.1 数据库设计
12.4.2 用户管理
12.4.3 角色管理
12.4.4 权限管理
12.4.5 用户—角色配置管理
12.4.6 角色—权限配置管理
12.5 项目实现迭代十七:使用yii\rbac\DbManager实现 RBAC
12.5.1 基本概念
12.5.2 用户管理
12.5.3 角色管理
12.5.4 权限管理
12.5.5 权限管理系统验证
12.6 项目实现迭代十八:使用yii2-admin扩展实现RBAC
12.6.1 配置
12.6.2 使用的数据库表
12.6.3 路由列表
12.6.4 角色列表
12.6.5 用户列表
12.6.6 菜单列表
12.6.7 集成AdminLTE后台主题及菜单展示
12.6.8 基于存取控制过滤器(ACF)的用户登录页面
当前位置:
首页>>
技术小册>>
Yii2框架从入门到精通(中)
小册名称:Yii2框架从入门到精通(中)
### 10.2.1 创建AJAX引擎XMLHttpRequest对象 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。它极大地提升了用户体验,使得Web应用能够拥有接近桌面应用的响应性和交互性。而`XMLHttpRequest`对象则是实现AJAX技术的核心,它允许JavaScript向服务器发送HTTP(或HTTPS)请求,并接收响应,而无需重新加载页面。在本章节中,我们将深入探讨如何在Yii2框架(或其他任何JavaScript环境中)中创建并使用`XMLHttpRequest`对象。 #### 10.2.1.1 XMLHttpRequest概述 `XMLHttpRequest`是Web API的一部分,它提供了一个在浏览器与服务器之间传输数据的功能,支持异步通信。尽管其名称中包含“XML”,但实际上`XMLHttpRequest`能够处理多种类型的数据,包括JSON、HTML、纯文本等。自XMLHttpRequest Level 2规范起,它还被扩展以支持二进制数据(如Blob和ArrayBuffer),进一步增强了其灵活性和功能。 #### 10.2.1.2 创建XMLHttpRequest对象 在JavaScript中,创建一个`XMLHttpRequest`对象非常简单。几乎所有的现代浏览器都支持这个对象,因此你几乎不需要担心兼容性问题。以下是如何创建`XMLHttpRequest`对象的基本代码: ```javascript var xhr = new XMLHttpRequest(); ``` 这行代码创建了一个新的`XMLHttpRequest`实例,并将其赋值给变量`xhr`。接下来,你可以使用`xhr`对象来配置请求、发送请求以及处理响应。 #### 10.2.1.3 配置请求 在发送请求之前,你需要通过`XMLHttpRequest`对象的方法和属性来配置请求。以下是一些常用的配置方法: - **open(method, url, [async], [user], [password])**:初始化一个请求。`method`指定请求方法(如GET、POST),`url`指定请求的URL。`async`是一个可选参数,表示请求是否异步进行(默认为true)。`user`和`password`用于认证,但通常不常用。 ```javascript xhr.open('GET', 'http://example.com/data', true); ``` - **setRequestHeader(header, value)**:在发送请求之前,设置请求的HTTP头。这对于需要身份验证或指定内容类型的请求特别有用。 ```javascript xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); ``` #### 10.2.1.4 发送请求 配置好请求后,就可以使用`send()`方法发送请求了。如果请求类型为GET,`send()`方法可以接受一个可选的参数,该参数将作为查询字符串附加到URL后面,但通常对于GET请求,我们会在`open()`方法中直接指定完整的URL。对于POST请求,可以在`send()`方法中发送数据体。 ```javascript // 对于GET请求 xhr.send(); // 对于POST请求 xhr.send('key1=value1&key2=value2'); ``` #### 10.2.1.5 处理响应 发送请求后,你需要处理来自服务器的响应。`XMLHttpRequest`对象提供了几个事件处理器来帮助你完成这项工作: - **onreadystatechange**:每当`XMLHttpRequest`对象的`readyState`属性发生变化时,都会触发此事件。`readyState`是一个表示请求/响应过程的整数值。 - **onload**:当请求成功完成时触发。这意呀着响应已经成功接收,并且响应的HTTP状态码为200-299之间。 - **onerror**:当请求失败时触发。 通常,你会使用`onreadystatechange`事件处理器来检查请求是否完成并成功接收响应。但是,为了简化代码,现代JavaScript开发更倾向于使用`onload`和`onerror`,因为它们更直接地反映了请求的成功或失败状态。 ```javascript xhr.onload = function() { if (xhr.status >= 200 && xhr.status < 300) { // 处理成功响应 console.log(xhr.responseText); // 假设响应是文本 } else { // 处理错误响应 console.error('请求失败:', xhr.status); } }; xhr.onerror = function() { // 处理网络错误 console.error('网络错误'); }; // 发送请求 xhr.send(); ``` #### 10.2.1.6 在Yii2框架中使用XMLHttpRequest 虽然`XMLHttpRequest`是JavaScript的原生对象,与Yii2框架无直接关联,但你可以在Yii2项目中通过JavaScript(或更现代的库如Fetch API、Axios等)来发送AJAX请求,并与Yii2的后端进行交互。Yii2提供了丰富的支持来处理AJAX请求,包括通过控制器动作(actions)来响应这些请求,并通过视图(views)或JSON响应来发送数据。 例如,你可以在Yii2的控制器中定义一个动作来处理AJAX请求,并返回JSON格式的响应: ```php // 控制器中的动作示例 public function actionAjaxExample() { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; // 假设这是从数据库或其他来源获取的数据 $data = ['message' => 'Hello, AJAX!']; return $data; } ``` 然后,在前端JavaScript中,你可以使用`XMLHttpRequest`(或Fetch API等)来请求这个动作,并处理返回的JSON数据。 #### 10.2.1.7 小结 `XMLHttpRequest`是AJAX技术的核心,它允许JavaScript与服务器进行异步通信,从而在不刷新页面的情况下更新网页内容。在Yii2框架中,虽然`XMLHttpRequest`不是框架的一部分,但你可以轻松地将其与Yii2的控制器和视图集成,以实现丰富的交互式Web应用。随着Web技术的发展,虽然出现了更现代、更简洁的替代方案(如Fetch API、Axios等),但了解`XMLHttpRequest`的工作原理仍然是学习Web开发的重要一步。
上一篇:
10.2 传统的JavaScript实现AJAX验证
下一篇:
10.2.2 创建HTTP请求
该分类下的相关小册推荐:
Laravel(10.x)从入门到精通(四)
Workerman高性能框架-GatewayWorker
PHP合辑3-数组函数
Laravel(10.x)从入门到精通(八)
PHP合辑4-字符串函数
Laravel(10.x)从入门到精通(二)
Workerman高性能Web框架-Webman
Yii2框架从入门到精通(上)
PHP8入门与项目实战(5)
Laravel(10.x)从入门到精通(五)
Magento零基础到架构师(安装篇)
PHP面试指南