Table does not appear in return Json

Asked

Viewed 423 times

7

I’m trying to show a table on my return insert but I am not succeeding, the insertion operation is correct as well as the confirmation message, but the table is not displayed, I have it:

    function GravaFase(event) {

    event.preventDefault();

    var params = $('#frmFase').serializeArray();    
    $("#resultado-fase").html('<img src="../_imagens/ajax-loader.gif" alt="Enviando..." />');

    $.post(
        'GravaFase.php',
        params,
        function( json, textStatus, jQxhr )
        {               
            if (json.status != "ERRO") {
                var msg = '<div class="alert alert-info" role="alert">' + json.msg + '</div>' ;
            } else {
                var msg = '<div class="alert alert-danger" role="alert">' + json.msg + '</div>' ;
            }
            // MOSTRA DE MENSAGEM CONFIRMANDO A INSERÇÃO
            $("#resultado-fase").html(msg); 
            // MOSTRA A TABELA RETONADA
            $("#resultado-tabela").html(tabela);
        },
        'json'
    )
    .fail(function( jqXhr, textStatus, errorThrown ){

        console.log( jqXhr, textStatus, errorThrown );
        try {
            var json = $.parseJSON(jqXHR.responseText);
            var msg = '<div class="alert alert-danger" role="alert">' + json.errorMessage + '.</div>';
            $("#resultado-fase").html(msg);
        } catch(e) { 
            var msg = '<div class="alert alert-danger" role="alert">Ocorreu um erro ao tentar manipular os dados. Verifique sua conexão com o banco de dados.</div>';
            $("#resultado-fase").html(msg);


        }
    });
}

Script php Gravafase:

//Array que irá retornar o status da execução do script (JSON)
$aretorno = array();    
$aretorno["msg"] = "";
$aretorno["tabela"] = "";
$aretorno["status"] = "";

@$conn = new mysqli($hostname_pcon, $username_pcon, $password_pcon, $database_pcon);

// Checar conexão
if ($conn->connect_errno) {
    $aretorno["msg"] = "Conexão ao banco de dados falhou.";
    $aretorno["status"] = "ERRO";
    header('Content-Type: application/json');
    echo json_encode($aretorno);
    exit;
}

if (!$conn->set_charset("utf8")) {
    $aretorno = array();    
    $aretorno = "Erro ao carregar conjunto de caracteres utf8.";
    header('Content-Type: application/json');
    echo json_encode($aretorno);
    exit;
}

// RESGATE DAS VARIÁVEIS
$_POST["IdContrato"];       
$_POST["dTipoFase"];
$_POST["dHora"];
$_POST["dDescricao"];

// FORMATANDO CAMPOS PARA INSERÇÃO
$Data = parseDate($_POST["dData"], "Y-m-d");

// REGISTRO DO LOG
$dataAgora = date('d/m/Y');
$hora = date("H:i:s"); 
$partes = explode("/", $dataAgora);
$dia = $partes[0];
$mes = $partes[1];
$ano = $partes[2];

// COMPONDO O LOG
$Log = $_SESSION['u_login']."_".$dia.$mes.$ano."_".$hora;

$IdContrato = $_POST["IdContrato"];

$BuscaRegistro = "SELECT IdTipoFase FROM `gerFaseObrigatoria` WHERE IdContrato = '$IdContrato'";
$Resultado = mysqli_query($conn, $BuscaRegistro) or trigger_error("Query Failed! SQL: $query - Error: ". mysqli_error($conn), E_USER_ERROR);

if($Resultado) {
    while($row = mysqli_fetch_assoc($Resultado)) {

    $row['IdTipoFase'];

    if ($row['IdTipoFase'] == $_POST["dTipoFase"]) {

        $sql = "INSERT INTO gerFaseContrato ( IdContrato, Descricao, IdTipoFase, Data, Hora, Log ) VALUES ( ?, ?, ?, ?, ?, ? )";

        // Preparar os dados:
        // i corresponde a uma variável de tipo inteiro
        // d corresponde a uma variável de tipo double
        // s corresponde a uma variável de tipo string
        // b scorresponde a uma variável que contém dados para um blob e enviará em pacotes

        if($stmt = $conn->prepare($sql) ){

            $stmt->bind_param(
                "ssssss",

            // RESGATE DAS VARIÁVEIS        
            $_POST["IdContrato"],
            $_POST["dDescricao"],
            $_POST["dTipoFase"],
            $Data,
            $_POST["dHora"],
            $Log
            );      

            // DESLIGA O AUTO COMMIT
            // $conn->autocommit(false);

            // INSERINDO REGISTRO NO BD
            if ($stmt->execute()) { 

                    $IdContrato = $_POST["IdContrato"];

                    $Busca = "SELECT *, date_format(`Data`,'%d/%m/%Y') AS `Data` FROM gerFaseContrato WHERE IdContrato = '$IdContrato'";
                    $Fase = mysqli_query($conn, $Busca) or trigger_error("Query Failed! SQL: $query - Error: ". mysqli_error($conn), E_USER_ERROR);

                    $aretorno["tabela"] =  '';

                    //fetch records
                    while($row = mysqli_fetch_assoc($Fase)) {
                        $aretorno["tabela"] .=  '';
                        $aretorno["tabela"] .=  ''.$row['IdFase'].'';
                        $aretorno["tabela"] .=  ''.$row['Descricao'].'';
                        $aretorno["tabela"] .=  ''.$row['Data'].'';
                        $aretorno["tabela"] .=  ''.$row['Hora'].'';
                        $aretorno["tabela"] .=  '';                    
                    }  
                    $aretorno["tabela"] .=  '';

                    $aretorno["msg"] = "Registro inserido com sucesso." .  $aretorno["tabela"];


            } else {
                $aretorno["msg"] = "Ocorreu um erro na inclusão dos dados:". $stmt->error ." Verifique";
                $aretorno["status"] = "ERRO";
            }

        } else {
            $aretorno["msg"] = "Ocorreu um erro na preparação dos dados: "  . $stmt->error . ". Verifique.";
            $aretorno["status"] = "ERRO";
        } 

    } else {
        $aretorno["msg"] = "Fase obrigatoria não confere, precisa ser fase: " . $row['IdTipoFase'];
        $aretorno["status"] = "ERRO";
    }

    }
}

// Fecha conexão com o BD
$conn->close();

//retornando o status / mensagem da execução
header('Content-Type: application/json');
echo json_encode($aretorno);

Where information is displayed:

        <!-- EXIBIÇÃO DAS MENSAGENS - FORMULÁRIO FASES -->
    <div class="col-md-12 column"  id="resultado-fase"></div>
    <!-- EXIBIÇÃO DOS REGISTROS DO BANCO DE DADOS -->
    <div class="col-md-12 column"  id="resultado-tabela"></div>

1 answer

5


Looks like you didn’t initialize the variable tabela with the return of the request in its callback function.

 function( json, textStatus, jQxhr ) {               
    ...
    // MOSTRA A TABELA RETONADA
    var tabela = json.tabela;
    $("#resultado-tabela").html(tabela);
  • Excellent, thanks for the great help @brunohdf

Browser other questions tagged

You are not signed in. Login or sign up in order to post.