WordPress com AJAX não funcionando
-
No meu site, através de um
form
eu envio/cadastro informações no banco, faço umSELECT
/consulta e retorno a última tabela gravada no banco, justamente a que o usuário acabou de inserir no form (junto com mais algumas informações que vem do banco).Como eu quero exibir estes valores que vem do banco num
modal
é necessário que a página não dê o refresh, para isso eu inseri oAJAX
da seguinte maneira:MEU AJAX:
$(document).ready(function(){ $('#enviar').click(function(){ $.ajax({ //CHAMA O AJAX DO WORDPRESS url: 'wp-admin/admin-ajax.php', type: 'POST', //CADASTRA, FAZ A CONSULTA E IMPRIME PARA O USUÁRIO data: 'action=prancha', error: function(){ alert('ERRO!!!'); }, //CASO A OPERAÇÃO TENHA ÊXITO, IMPRIMA O RESULTADO NA DIV RESULTADO success: function(data){ $('#resultado').html(data); } }); }); });
MEU FUNCTIONS.PHP:
function prancha(){ header('Content-Type: text/html; charset=utf-8'); include "../../../wp-config.php"; /* SE OS VALORES FOREM VÁLIDOS, INSERE NO BANCO DE DADOS */ $nome = ""; $email = ""; $estilo = ""; $experiencia = ""; $altura = ""; $peso = ""; // VALIDAÇÃO DAS VÁRIÁVEIS if(!empty($_POST)){ $nome = $_POST['nome']; $email = $_POST['email']; $estilo = $_POST['estilo']; $experiencia = $_POST['experiencia']; $altura = $_POST['altura']; $peso = $_POST['peso']; cadastra_usuario($nome, $email, $estilo, $experiencia, $altura, $peso); } //INSERE NO BANCO NOME, EMAIL, ESTILO, EXPERIÊNCIA, ALTURA E PESO NA TABELA CORRESPONDENTE function cadastra_usuario($nome, $email, $estilo, $experiencia, $altura, $peso){ global $wpdb; $table = 'dados_usuario'; $data = array( 'nome' => $nome, 'email' => $email, 'estilo' => $estilo, 'exp' => $experiencia, 'altura' => $altura, 'peso' => $peso, ); $updated = $wpdb->insert( $table, $data ); if ( ! $updated ) { $wpdb->print_error(); } } //CONECTA COM O BANCO PARA FAZER O SELECT include "banco.php"; function BuscaAlgo($conexao){ // SELECT DE CONSULTA + INNER JOIN NO BANCO $query = "SELECT USU.usuario, USU.nome, USU.exp, USU.altura, USU.peso, PRAN.exp_ref, PRAN.altura_ref, PRAN.peso_ref, PRAN.tipo_prancha, PRAN.tamanho_prancha, PRAN.meio_prancha, PRAN.litragem_prancha FROM DADOS_USUARIO AS USU INNER JOIN PRANCHA AS PRAN on USU.exp = PRAN.exp_ref WHERE USU.altura = PRAN.altura_ref AND USU.peso = PRAN.peso_ref ORDER BY USU.usuario DESC LIMIT 1"; $resultado = mysqli_query($conexao,$query); $retorno = array(); while($experiencia = mysqli_fetch_assoc($resultado)){ $retorno[] = $experiencia; } return $resultado; } //IMPRIME A CONSULTA PARA O USUÁRIO $resultado = array(); $resultado = BuscaAlgo($conexao); foreach($resultado as $valor){ echo $valor["usuario"]; print(". . . ."); echo $valor["nome"]; print(". . . ."); echo $valor["exp"]; print(". . . ."); echo $valor["altura"]; print(". . . ."); echo $valor["peso"]; print(". . . ."); print("///////"); echo $valor["tipo_prancha"]; print(". . . ."); echo $valor["tamanho_prancha"]; print(". . . ."); echo $valor["meio_prancha"]; print(". . . ."); echo $valor["litragem_prancha"]; } die(); //FINALIZANDO A EXECUÇÃO } //Adiciona a funcao extra votos aos hooks ajax do WordPress. add_action('wp_ajax_prancha', 'prancha'); add_action('wp_ajax_nopriv_prancha', 'prancha');
O código está comentando, basicamente eu fiz:
AJAX:
- No campo
URL
chamo oadmin-ajax.php
nativo do WordPress. - No campo
DATA
chamo a função que faz o cadastro, a consulta e exibe para o usuário. - No campo
SUCCESS
, imprime o valor dedata
.
FUNCTIONS: Faço o código de cadastro, faço a consulta no banco e imprimo na tela com o
echo
.O ´AJAX` está me retornando a mensagem de erro.
Como posso resolver isso?
O que eu estou fazendo de errado?obs1: Quando eu insiro o código que está no meu
functions
, o código de cadastro, consulta e exibição direto no meu footer, ele funciona. Logo, pode-se entender que o erro não está nem na inserção, nem na consulta e nem na exibição dos dados.
obs2: As informações eu quero exibir dentro de ummodal
do boostrap. De início eu estou apenas exibindo na tela, para verificar que está tudo OK. Depois disso eu vou pesquisar sobre como colocar esses dados dentro domodal
, mesmo não sendo o assunto principal do post, sugestões de como fazer isso também são bem vindas. - No campo
- O tópico ‘WordPress com AJAX não funcionando’ está fechado para novas respostas.