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:
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 the
echo” 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 modal
choć nie jest to główny temat wpisu, mile widziane są również sugestie, jak to zrobić.