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');