На моем сайте, через form
Я отправляю/регистрирую ту же информацию в базе данных, делаю SELECT
/запрос и возвращаю его! Верните последнюю таблицу, сохраненную в базе данных, только этот пользователь просто ввел в форму (вместе с дополнительной информацией, поступающей из базы данных).Wordpress: Ajax не работает для вставки, запроса и данных результата
Как я хочу отображать эти значения, исходящие из базы данных в modal bootstrap
, необходимо, чтобы страница не давала обновления. Для этого я вставил AJAX
следующим образом:
$(document).ready(function(){
$('#enviar').click(function(){
$.ajax({
//CALL 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);
}
});
});
});
В моем файле functions.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');
Код комментирования, в основном я сделал:
AJAX:
- В поле `URL` вызывается собственный Wordpress` admin-ajax.php`.
- В поле `DATA` вызывается функция, которая выполняет регистрацию, запрос и отображение пользователю.
- В поле `SUCCESS` печатается значение` data`.
ФУНКЦИИ: Я делаю регистрационный код в базе данных, делаю запрос и печатаю с помощью echo
.
AJAX
возвращает мне сообщение об ошибке.
Как я могу это решить?
Что я делаю неправильно?
Note1: Когда я вставляю код, который находится в моих 'функциях , the registration code, the query and the
echo' для отображения в прямом направлении, в моем footer.php
, он работает. Поэтому мы можем понять, что ошибка даже не в коде вставки, запроса или отображения.
ПРИМЕЧАНИЕ 2: Я хочу отобразить возврат базы данных в пределах modal boostrap
. Сначала я просто показываю на экране, чтобы проверить, все ли в порядке. После этого я буду исследовать, как помещать эти данные в modal
, хотя и не является основным предметом сообщения, также приветствуются предложения о том, как это сделать.
Если вы используете вызовы jQuery WordPress, следует использовать «jQuery», а не «$», чтобы избежать конфликтов и придерживаться наилучшей практики ожидания. –