Suporte » Ajustando o WordPress » WordPress com AJAX não funcionando

  • No meu site, através de um form eu envio/cadastro informações no banco, faço um SELECT/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 o AJAX 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 o admin-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 de data.

    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 um modal 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 do modal, mesmo não sendo o assunto principal do post, sugestões de como fazer isso também são bem vindas.

Visualizando 1 resposta (de um total de 1)
  • Criador do tópico gtw7375

    (@gtw7375)

    Esta sendo retornado a mensagem de erro do próprio AJAX error: function(){ alert('ERRO!!!');},

Visualizando 1 resposta (de um total de 1)
  • O tópico ‘WordPress com AJAX não funcionando’ está fechado para novas respostas.