WordPress

tworzenie wtyczek — Ajax nie działa przy wstawianiu, wysyłaniu zapytań i danych wynikowych

  • 19 czerwca, 2016
  • 4 min read
tworzenie wtyczek — Ajax nie działa przy wstawianiu, wysyłaniu zapytań i danych wynikowych


Na mojej stronie przez a form Wysyłam/rejestruję te same informacje w bazie danych, robię a SELECT/query i zwróć! Zwróć ostatnią zapisaną w bazie tabelę, tylko tego użytkownika, który właśnie wpisał w formularzu (wraz z dodatkowymi informacjami pochodzącymi z bazy danych).

Jak chcę wyświetlić te wartości pochodzące z bazy danych w pliku a modal bootstrap konieczne jest, aby strona nie dawała odświeżania. W tym celu wstawiłem AJAX następująco:

$(document).ready(function(){
      $('#enviar').click(function(){
          $.ajax({
          //CAAL  AJAX IN WORDPRESS 
          url: 'wp-admin/admin-ajax.php',
          type: 'POST',              
          //INSERT, QUERY AND DISPLAYS TO USER      
          data: 'action=prancha',                  
          error: function(){
              alert('ERRO!!!');
          },
          //IF OK, DISPLAYS TO USER IN DIV "RESULT"
          success: function(data){
              $('#result').html(data);
          }               
      });
    });
    });

MOJE FUNKCJE.PHP:

function prancha(){
  header('Content-Type: text/html; charset=utf-8');

  include "../../../wp-config.php";


      /* DECLARING THE VARIABLES  */
  $nome = "";
  $email = "";
  $estilo = "";
  $experiencia = "";
  $altura = "";
  $peso = "";

  // VALIDATION
  if(!empty($_POST)){     
     $nome = $_POST['nome'];
     $email = $_POST['email'];
     $estilo = $_POST['estilo'];
     $experiencia = $_POST['experiencia'];
     $altura = $_POST['altura'];
     $peso = $_POST['peso'];

     cadastra_user($nome, $email, $estilo, $experiencia, $altura, $peso);
 }


  //INSERT IN DATABASE NAME, EMAIL, ESTILE, EXPERIENCE, HEIGHT AND WEIGHT
function cadastra_user($nome, $email, $estilo, $experiencia, $altura, $peso){          
    global $wpdb;

    $table="user";

    $data = array(      
      'nome' => $nome,
      'email' => $email,
      'estilo' => $estilo,
      'exp' => $experiencia,
      'altura' => $altura,
      'peso' => $peso,
    );

    $updated = $wpdb->insert( $table, $data );

    if ( ! $updated ) {
      $wpdb->print_error();
    }    
}   

//CONECT WITH DATABASE TO DO THE SELECT
include "db.php";

  function BuscaAlgo($conexao){

  // QUERY + INNER JOIN IN DATABASE
 $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;
}


//DISPLAYS THE QUERY TO USER      
$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(); //END THE EXECUTION
}
//ADD THE AJAX HOOKS IN WORDPRESS
add_action('wp_ajax_prancha', 'prancha');
add_action('wp_ajax_nopriv_prancha', 'prancha');

Kod komentuje, w zasadzie zrobiłem:

Warto przeczytać!  Jak zredagować tekst w WordPress (łatwy sposób)

AJAX:

  • W polu `URL` wywołaj natywnego WordPressa `admin-ajax.php`.
  • W polu `DATA` wywołaj funkcję, która dokonuje rejestracji, zapytania i wyświetlania użytkownikowi.
  • W polu `SUCCESS` drukuje wartość `data`.

FUNKCJE: Tworzę kod rejestracyjny w bazie danych, wykonuję zapytanie i drukuję z echo.

The AJAX zwraca mi komunikat o błędzie. To błąd AJAX samo. Pole error: function(){ alert('ERRO!!!');},

Jak mogę to rozwiązać? Co ja robię źle?

Uwaga 1: Kiedy wstawię kod znajdujący się w moim pliku „functions, the registration code, the query and theecho” do wyświetlania w sposób bezpośredni, w my footer.php, to działa. Dlatego możemy zrozumieć, że błąd nie występuje nawet w kodzie wstawiania, zapytania lub wyświetlania.

UWAGA 2: Chcę wyświetlić powrót bazy danych w ciągu modal boostrap. Na początku tylko wyświetlam na ekranie, żeby sprawdzić, czy wszystko jest w porządku. Następnie zbadam, jak umieścić te dane w pliku modalchoć nie jest to główny temat wpisu, mile widziane są również sugestie, jak to zrobić.


Źródło