ajax + phpoo_mvc + mysql_pdo
To tentando fazer uma requisição Ajax em um projeto POO-MVC
Tenho um formulário q eu uso o evento onchange pra chamar uma função JavaScript q por sua vez usa Ajax pra requisitar via POST uma página php
<!DOCTYPE html>
<head>
<script>
function consultaCPF($cpf)
{
$.ajax({
type : 'POST',
url : 'ajax/consultaCPF.php',
data : 'CPF='+$cpf,
dataType: 'json',
success : function(response){
if(response.codigo == "1") {
}else{
}
},
error: function(XMLHttpRequest, textStatus, errorThrown){
$("#erro").html('<b>ERRO</b>'+XMLHttpRequest.responseText);
}
});
}
</script>
</head>
<body>
<div id="erro">
<form name="form" method="post">
<input type="text" name="CPF" maxlength="14" onchange="return consultaCPF(this.value)" value="<?php if($_POST){echo $_POST['CPF'];}?>">
</form>
</div>
</body>
</html>
Até aí td bem...
Na página php eu instancio uma classe da minha Model q faz uma consulta no bd pra saber se já existe ou não cadastrado o CPF digitado no form. Se existir me retorna 1, senão me retorna 2. A resposta eu capturo em json e passo de volta pro Ajax receber. Esse success é q vai determinar minha ação.
<?php
if($_POST && $_POST['CPF']){
$consulta = new \App\Models\Validacoes(\App\Init::getDb());
$res = $consulta->CPF($_POST['CPF']);
if($res == 1){
$retorno = array('codigo' => 1, 'mensagem' => 'CPF ja existe');
echo json_encode($retorno);
exit();
}else{
$retorno = array('codigo' => 2, 'mensagem' => 'CPF não cadastrado');
echo json_encode($retorno);
exit();
}
}
Até aí tudo bem...
Acontece que quando o Ajax faz a requisição da página php onde eu instancio minha classe, não sei pq tá dando Fatal Error Class Not Found (como se não tivesse conectando com meu banco).
namespace App;
class Init
{
public static function getDb(){
$db = new \PDO("mysql:host=127.0.0.1;dbname=root;charset=utf8","root","vertrigo");
return $db;
}
}
Porém funciona se eu testar minha classe direto na página PHTML do formulário usando um método GET pra receber e passar a consulta pro meu objeto.
namespace App\Models;
class Validacoes
{
protected $db;
public function __construct(\PDO $db)
{
$this->db = $db;
}
public function CPF($cpf){
$stmt = $this->db->prepare("Select CPF from tabela where REPLACE(REPLACE(CPF,'.',''),'-','') = :cpf LIMIT 1");
$stmt->bindParam(":cpf",$cpf);
$stmt->execute();
if($stmt->fetchAll()){
$res = 1;
}else{
$res = 2;
}
return $res;
}
}
Será q o fato de não funcionar com o Ajax requisitando em public uma página php, tem haver com a rota? Pois só as Views estão usando Controllers! Ou estou fazendo errado utilizando uma página php na requisição Ajax?
**ERRO**
( ! ) Fatal error: Class 'App\Models\Validacoes' not found in D:\Projetos\SAEE\public\ajax\consultaCPF.php on line *3*
Call Stack
#
Time
Memory
Function
Location
1
0.0010
335304
{main}( )
..\consultaCPF.php**:**0Discussão (2)
Carregando comentários...