- FuelPHP 教程
- FuelPHP - 首页
- FuelPHP - 简介
- FuelPHP - 安装
- FuelPHP - 架构概述
- FuelPHP - 简单Web应用
- FuelPHP - 配置
- FuelPHP - 控制器
- FuelPHP - 路由
- FuelPHP - 请求 & 响应
- FuelPHP - 视图
- FuelPHP - 展示器
- FuelPHP - 模型 & 数据库
- FuelPHP - 表单编程
- FuelPHP - 验证
- 高级表单编程
- FuelPHP - 文件上传
- FuelPHP - Ajax
- FuelPHP - HMVC 请求
- FuelPHP - 主题
- FuelPHP - 模块
- FuelPHP - 包
- Cookie & Session 管理
- FuelPHP - 事件
- FuelPHP - 邮件管理
- FuelPHP - 性能分析器
- 错误处理 & 调试
- FuelPHP - 单元测试
- 完整的运行示例
- FuelPHP 有用资源
- FuelPHP - 快速指南
- FuelPHP - 有用资源
- FuelPHP - 讨论
FuelPHP - Ajax
AJAX 是web编程中的一项现代技术。它提供了一种在网页中异步发送和接收数据的方法,无需刷新页面。本章让我们学习FuelPHP AJAX编程。
FuelPHP框架提供识别请求类型是否为AJAX的方法。Input类为此目的提供了一个方法,is_ajax()。如果发出了AJAX请求,Input::is_ajax方法返回true,否则返回false。
此方法用于在服务器端正确处理AJAX请求。
if (Input::is_ajax()) { // Ajax request } else { // Normal request }
我们可以使用json_encode返回JSON响应。我们可以结合这两种方法创建一个简单且干净的基于AJAX的Web应用程序。
运行示例
让我们在员工应用程序中添加一个新页面,ajax/index,并尝试异步获取员工信息。
步骤1 − 在fuel/app/classes/controller/ajax.php中创建一个新的控制器,Controller_Ajax。
<?php class Controller_Ajax extends Controller { }
步骤2 − 创建一个新的动作,action_index,如下所示。
<?php class Controller_Ajax extends Controller { public function action_index() { $emps = model_employee::find('all'); $data = array(); $i = 0; foreach($emps as $emp) { $data[$i] = array(); $data[$i]['name'] = $emp['name']; $data[$i]['age'] = $emp['age']; $i = $i + 1; } if(\Input::is_ajax()) { echo json_encode($data); } else { return \View::forge("ajax/index"); } } }
在这里,如果请求是AJAX,我们获取学生信息,将其编码为JSON,并返回它。否则,我们只渲染相应的视图。
步骤3 − 创建相应的视图文件,fuel/app/views/ajax/index.php,如下所示。
<html> <head> <script language = "javascript" src = "/assets/js/jquery-3.2.1.min.js"></script> <style> .table { border-collapse: collapse; } .table th, td { border-bottom: 1px solid #ddd; width: 250px; text-align: left; align: left; } </style> </head> <body> <a id = "loademployee" href = "#">Load employee information</a> </br> </br> <table class = "table"> <tbody id = "employee"> </tbody> </table> <script language = "javascript"> $(document).ready(function() { $("#loademployee").on("click", function(event) { $.ajax ({ url: '/ajax/index', type: 'POST', dataType: 'json', async: true, success: function(data, status) { var e = $('<tr><th>Name</th><th>Age</th></tr>'); $('#employee').html(''); $('#employee').append(e); for(i = 0; i < data.length; i++) { employee = data[i]; var e = $('<tr><td id = "name"></td><td id = "age"></td></tr>'); $('#name', e).html(employee['name']); $('#age', e).html(employee['age']); $('#employee').append(e); } }, error : function(xhr, textStatus, errorThrown) { alert('Ajax request failed.'); } }); }); }); </script> </body> </html>
在这里,我们创建了一个锚点标签(id: loademployee)来使用AJAX调用加载员工信息。AJAX调用使用JQuery完成。附加到loademployee标签的事件在用户点击时激活。然后,它将使用AJAX调用获取员工信息,并动态生成所需的HTML代码。
步骤4 − 运行应用程序。
最后,运行应用程序,https://127.0.0.1:8000/ajax/index,然后点击“加载员工信息”锚点标签。
结果
广告