FuelPHP - Ajax
AJAX é uma tecnologia moderna em programação web. Ele fornece opções para enviar e receber dados em uma página da Web de forma assíncrona, sem atualizar a página. Vamos aprender sobre a programação FuelPHP AJAX neste capítulo.
A estrutura FuelPHP fornece opções para identificar se o tipo de solicitação é AJAX ou não. A classe de entrada tem um método,is_ajax()para este propósito. Se uma solicitação AJAX for feita,Input::is_ajax método retorna true, de outra forma false.
Este método é usado para lidar com uma solicitação AJAX corretamente no lado do servidor.
if (Input::is_ajax()) {
// Ajax request
} else {
// Normal request
}
Podemos usar json_encodepara retornar a resposta JSON. Podemos combinar esses dois métodos para criar um aplicativo da web baseado em AJAX simples e limpo.
Exemplo de Trabalho
Vamos adicionar uma nova página, ajax/index no aplicativo do funcionário e tente buscar as informações do funcionário de forma assíncrona.
Step 1 - Crie um novo controlador, Controller_Ajax em fuel / app / classes / controller / ajax.php.
<?php
class Controller_Ajax extends Controller {
}
Step 2- Crie uma nova ação, action_index como segue.
<?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");
}
}
}
Aqui, se a solicitação for AJAX, buscamos as informações do aluno, codificamos como JSON e as retornamos. Caso contrário, apenas renderizaremos a visualização correspondente.
Step 3 - Crie o arquivo de visualização correspondente, fuel/app/views/ajax/index.php do seguinte modo.
<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>
Aqui, criamos uma tag âncora (id: loademployee) para carregar as informações do funcionário usando a chamada AJAX. A chamada AJAX é feita usando JQuery. O evento anexado à tag loademployee é ativado quando um usuário clica nele. Em seguida, ele buscará as informações do funcionário usando a chamada AJAX e gerará o código HTML necessário dinamicamente.
Step 4 - Execute o aplicativo.
Por fim, execute o aplicativo, http://localhost:8000/ajax/index e clique na guia Carregar âncora de informações do funcionário.