Php Ajax无法插入、查询和结果数据
在我的网站上,通过Php Ajax无法插入、查询和结果数据,php,jquery,mysql,ajax,wordpress,Php,Jquery,Mysql,Ajax,Wordpress,在我的网站上,通过表单我在数据库中发送/注册相同的信息,执行选择/查询并返回它!返回保存在数据库中的最后一个表,即用户刚刚在表单上输入的表(以及来自数据库的更多信息) 如何在模式引导中显示来自数据库的这些值页面必须不进行刷新。为此,我插入了AJAX,如下所示: $(document).ready(function(){ $('#enviar').click(function(){ $.ajax({ //CALL AJAX IN WORDPRESS
表单
我在数据库中发送/注册相同的信息,执行选择
/查询并返回它!返回保存在数据库中的最后一个表,即用户刚刚在表单上输入的表(以及来自数据库的更多信息)
如何在模式引导中显示来自数据库的这些值
页面必须不进行刷新。为此,我插入了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);
}
});
});
});
在my 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');
代码是注释,基本上我是这样做的:
阿贾克斯:
- 在“URL”字段中,调用本机Wordpress“admin ajax.php”李>
- 在“数据”字段中,调用向用户进行注册、查询和显示的函数李>
- 在“成功”字段中,打印“数据”的值
echo
进行查询和打印
AJAX
正在向我返回错误消息
我怎样才能解决这个问题
我做错了什么
注1:当我插入“函数中的代码时,注册码、查询和
echo”将以直接方式显示在我的footer.php
中,它可以工作。因此,我们可以理解,错误甚至不在插入、查询或显示的代码中注2:我想在
模式boostrap
中显示数据库的返回。首先我只是在屏幕上显示,检查一切是否正常。之后,我将研究如何将这些数据放入模式,尽管这不是本文的主要主题,但也欢迎对此提出建议。首先,您应该使用$wpdb对象访问Wordpress中的数据库,包括select。检查文档
您没有指定会出现何种错误,但我认为您的ajax调用定义是错误的,应该是:
data: {
action : 'prancha'
}
您的代码中有一些错误,但您刚刚错过了代码中非常重要的一部分,
为了使其正常工作,wp\u localize\u script()
函数:
add_action('wp_enqueue_scripts', 'meu_ajax_scripts');
meu_ajax_scripts(){
// Register your script (located in a subfolder `js` of your active theme, for example here)
wp_enqueue_script( 'meuscript', get_template_directory_uri().'/js/ajax_script.js', array('jquery'), '1.0', true );
// Making the bridge between php and javascript:
wp_localize_script( 'meuscript', 'meuajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}
此代码位于活动主题(或子主题)文件夹的function.php文件中……如果它是子主题,则必须用get\u template\u directory\u uri()
替换为get\u stylesheet\u directory\u uri()
如您所见,'meuscript'
在两个函数中都有wp\u enqueue\u script()
和wp\u localize\u script()
然后,您将在jQuery
脚本中检索'meuajax'
和'ajaxurl'
它们是这样组合的:
url:meuajax.ajaxurl,
而不是url:'wp admin/admin ajax.php',
wp\u localize\u script()
函数将通过admin\u url('admin ajax.php')
函数从jQuery脚本到php
函数建立一座桥梁
(最新更新-诺瓦阿图利萨圣奥)
关于你的评论,你的答案/问题更新,这也是
下面是您最近更新的jQuery代码(使用与表单数据相关的不同方法)。所有表单数据在通过ajax发送到prancha()
php函数之前都会序列化:
//我们使用jQuery而不是$。感谢Phill Healey(见评论)。
//然后我们把$shorthand放回函数中…
jQuery(文档).ready(函数($){
//现在我们可以使用$shorthand,避免javascript错误(使用wordpress)。
$('#enviar')。提交(函数(e){//更新
var minhapracha=$(this).serialize();//序列化表单数据
e、 preventDefault();//防止表单提交正常行为
//ajax调用
$.ajax({
键入:“POST”,
行动:“普拉查”,
url:meuscript.ajaxurl,//函数url
data:meuscript.minhapracha,//表单的所有数据(序列化)
//显示成功消息
成功:功能(数据){
$('#result').html('Sucesso:'.data);
//用于在浏览器js控制台中进行调试
控制台日志(数据);
},
//显示错误消息
错误:函数(错误){
$('#result').html('Erro!:'.error);
//用于在浏览器js控制台中进行调试
console.log(错误);
}
});
});
});
将此代码放入活动主题(或子主题)的js子文件夹中的js文件ajax_script.js中
您的html表单(例如)必须与以下表单类似:
<form method="post" id="minhaprancha"> // this id is important too (no "action" needed)
<label for="Seu nome">From *</label>
<input name="nome" id="nome" type="text" class="form-control" placeholder="Seu nome" required>
<br />
<label for="Seu email">From *</label>
<input name="email" id="email" type="email" class="form-control" placeholder="Seu email" required>
<br />
<label for="Seu estilo">From *</label>
<input name="estilo" id="estilo" type="text" class="form-control" placeholder="Seu estilo" required>
<br />
<label for="Seu experiencia">From *</label>
<input name="experiencia" id="experiencia" type="text" class="form-control" placeholder="Seu experiencia" required>
<br />
<label for="Seu altura">From *</label>
<input name="altura" id="altura" type="text" class="form-control" placeholder="Seu altura" required>
<br />
<label for="Seu peso">From *</label>
<input name="peso" id="peso" type="text" class="form-control" placeholder="Seu peso" required>
<br />
<?php
// This imput hidden element has the name value of the php function ?>
<input type="hidden" name="action" value="prancha"/>
<input type="submit" id="enviar" name="enviar" value="Enviar">
</form>
<div id="result" class="result"></div>
这一次,这是一个交钥匙解决方案,一旦您使表单适应它,它将起作用
参考资料:
首先,我感谢他们愿意提供帮助。
第二,在带着反馈来到这里之前,我更喜欢搜索更多关于如何解决我的问题的信息
你发给我的代码,仍然不起作用。我做了一些改变,它部分地起作用了
- 我在jQuery中为
单击替换了的提交
,也为文本替换了按钮类型
- 我将
serialize()
的this
替换为我表单的id
jQuery(文档).ready(函数($){
$(“#enviar”)。单击(函数(e){//I替换了SUBMIT
的click
var minhaprancha=$(“#minhaprancha”).serialize();//我将THIS
替换为我表单的id
e.preventDefault(); // preventing form submit normal behavior
$.ajax({
type: 'POST',
url: meuajax.ajaxurl,
data: meuajax.minhaprancha,
success: function( data ){
$('#resultado').html( 'Sucesso : ' + data );
console.log(data);
},
error: function( error ){
$('#resultado').html( 'Erro! : ' + error );
console.log(error);
}
});
});
}))
经过这些修改,代码工作正常,但并不完美。我放置了一个警报
来检查serialize()
是否工作正常
e.preventDefault(); // preventing form submit normal behavior
$.ajax({
type: 'POST',
url: meuajax.ajaxurl,
data: meuajax.minhaprancha,
success: function( data ){
$('#resultado').html( 'Sucesso : ' + data );
console.log(data);
},
error: function( error ){
$('#resultado').html( 'Erro! : ' + error );
console.log(error);
}
});
});
jQuery(document).ready(function($){
$('#enviar').click(function(e){
var minhaprancha = '$nome='+$("#nome").val()+
'&email='+$("#email").val()+
'&estilo='+$("#estilo").val()+
'&experiencia='+$("#experiencia").val()+
'&altura='+$("#altura").val()+
'&peso='+$("#peso").val(); //GETTING THE VALUES OF FIELDS
e.preventDefault(); // preventing form submit normal behavior
$.ajax({
type: 'POST',
url: meuajax.ajaxurl,
data: { action: 'prancha', minhaprancha },
success: function( data ){
$('#resultado').html( 'Sucesso : ' + data );
console.log(data);
},
error: function( error ){
$('#resultado').html( 'Erro! : ' + error );
console.log(error);
}
});
});
});
jQuery(document).ready(function($){
$('#enviar').click(function(e){
e.preventDefault(); // preventing form submit normal behavior
$.ajax({
type: 'POST',
url: meuajax.ajaxurl,
action: 'prancha',
data: { 'nome':nome, 'email':email, 'estilo':estilo, 'experiencia':experiencia, 'altura':altura, 'peso':peso },
success: function( data ){
$('#resultado').html( 'Sucesso : ' + data );
console.log(data);
},
error: function( error ){
$('#resultado').html( 'Erro! : ' + error );
console.log(error);
}
});
});
});
function meu_ajax_scripts(){
wp_enqueue_script( 'meuajax', get_template_directory_uri().'/consulta.js', array('jquery'), '1.0', true );
wp_localize_script( 'meuajax', 'meuajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}
add_action('wp_enqueue_scripts', 'meu_ajax_scripts');
function prancha(){
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);
}
function cadastra_usuario($nome, $email, $estilo, $experiencia, $altura, $peso){
global $wpdb;
$table = 'dados_usuario';
$data = array(
'nome' => $nome,
'email' => $email,
'estilo' => $estilo,
'experiencia' => $experiencia,
'altura' => $altura,
'peso' => $peso,
);
$updated = $wpdb->insert( $table, $data );
if ( ! $updated ) {
$wpdb->print_error();
}
}
die();
}
add_action('wp_ajax_prancha', 'prancha');
add_action('wp_ajax_nopriv_prancha', 'prancha');