gpt4 book ai didi

php - Wordpress:Ajax 无法插入、查询和结果数据

转载 作者:行者123 更新时间:2023-11-29 06:11:43 24 4
gpt4 key购买 nike

在我的网站上,通过表单,我在数据库中发送/注册相同的信息,执行SELECT/query 并返回它!返回保存在数据库中的最后一个表,即刚刚在表单中输入的用户(以及来自数据库的更多信息)。

我想如何在 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 返回错误信息。

我该如何解决这个问题?

我做错了什么?

注意 1:当我插入我的“函数”中的代码时,注册码、查询和回显以直接方式显示在我的页脚中.php,有效。因此,我们可以理解错误甚至不在插入、查询或显示的代码中。

注意 2:我想在 modal boostrap 中显示数据库的返回。起初我只是在屏幕上显示,以检查一切是否正常。之后我将研究如何将这些数据放入模态,虽然这不是本文的主题,但也欢迎就如何做到这一点提出建议。

最佳答案

首先,您应该使用 $wpdb 对象访问 Wordpress 中的数据库,包括选择。查看文档 https://codex.wordpress.org/Class_Reference/wpdb

你没有指定你得到的错误类型,但我认为你的ajax调用定义是错误的,它应该是:

data: {
action : 'prancha'
}

关于php - Wordpress:Ajax 无法插入、查询和结果数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37911757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com