- 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://:8000/ajax/index,然後點選“載入員工資訊”錨點標籤。
結果
廣告