Jump to content
AlexandrePrezzi

JSON_ENCODE Vazio

Recommended Posts

Bom dia ....

Estou com o seguinte trecho de código em um arquivo 

$file =  'relXLSX/'.fConsultaPrecoXLSX($wResultado, $auxLista, $auxDsFornecedor, $auxDsLoja);
$mensagem = 'Lista foi gerada com sucesso!';
echo json_encode(array('rst' => True,'msg' => $mensagem,'arquivo' => $file));

Na $file tem o caminho de um arquivo xlsx  que sera exportado por exemplo 'relXLSX/arquivo.xlsx'.

 

Em um outro arquivo tenho uma chamada em Ajax que está da seguinte forma:

 

jQuery.ajax({
type: "POST",
url: "request_cons_preco.php",
data: dados, 
cache: false,
beforeSend: function() {;
	$('#resultConsulta').html("<img src='img/aguarde.gif' />");
},
success: function(e) {
$('#resultConsulta').html(e);
	var obj = JSON.parse(e);  //dessa forma obj retorna vazio
	alert(obj);
}

A linha $('#resultConsulta').html(e);    mostra na tela o valor de (e) = {"rst":true,"msg":"Lista foi gerada com sucesso!","arquivo":"relXLSX\/afba20646f4c9e13980f95ed705a9ef3.xlsx"}, ou seja os dados vindos do json_encode. 

 

Gostaria de saber porque a var  obj   está retornando vazia ?

 

Obs se eu escrever a linha dessa forma var obj = JSON.parse('{"rst":true,"msg":"Lista foi gerada com sucesso!","arquivo":"relXLSX\/afba20646f4c9e13980f95ed705a9ef3.xlsx"}'); , o resultado funciona..

 

Se alguém puder me ajudar eu agradeço.

Share this post


Link to post
Share on other sites
Pra mim não retornou vazio. (removi o arquivo no json pra facilitar o teste).
 
<html>
    <div id="resultConsulta">
    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>
        $.ajax({
            type: "POST",
            url: "json.php",
            cache: false,
            success: function (e) {
                $('#resultConsulta').html(e);
                var obj = JSON.parse(e); //dessa forma obj retorna vazio
                console.log(obj);
            }
        });
    </script>
</html>
 

Share this post


Link to post
Share on other sites

Fiz um console.log no  (e)  para ver o q retorna e olha só (imagem do anexo) ....  ele traz o html todo e não somente o objeto do json ....

 

Sabe o porque disso ?

 

 

consoleLog.png

Share this post


Link to post
Share on other sites

Sim Sim .. rodando pelo wamp.

 

Fiz de uma outra forma.. e  consegui o resultado esperado ... 

 

$('#btn_GerarConsultaXLSX').click(function() {
                                          var wCodProd = $('#cns_codProd').val();
                                          var wDescricaoProd = $('#cns_descricaoProd').val();
                                          var wListaBaseAtual = $('#cns_lista_base_atual').val();
                                          var wFornecedor = $('#cns_fornecedor').val();
                                          var wLoja   = $ ('#cns_loja').val();
                                            $.post( "gera_excel.php", 
                                                    {ACAO: 'GERAR_EXCEL', 
                                                     cns_codProd: wCodProd,
                                                     cns_descricaoProd: wDescricaoProd,
                                                     cns_lista_base_atual: wListaBaseAtual,
                                                     cns_fornecedor: wFornecedor,
                                                     cns_loja: wLoja}, 
                                            function( data ) {
                                             console.log( data.rst);
                                             console.log( data.msg);
                                             console.log( data.arquivo);
                                             if (data.rst){
                                                    $('#resultConsulta').html(data.msg);
                                                    setTimeout(function(){
                                                        window.location = data.arquivo;
                                                    }, 1000);
                                                } else {
                                                      $('#resultConsulta').html(data.msg);
                                                      $('#resultConsulta').html("<p>Mensagem de teste</p>");   
                                                }   ;
                                            }, "json"); 
                                   });

Utilizando dessa forma deu certo ....  

 

Alem disso criei um arquivo php  específico para gerar o arquivo em Excel.

 

Agradeço a ajuda.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Sapinn
      Iai galera blz? Tô com uma duvida aqui. Eu tenho um menu Vertical Tabs que basicamente me ajuda a navegar em uma pagina sem precisar criar varias rotas para outras paginas. Segue o codigo:
      <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> * {box-sizing: border-box} body {font-family: "Lato", sans-serif;} /* Style the tab */ .tab { float: left; border: 1px solid #ccc; background-color: #f1f1f1; width: 30%; height: 300px; } /* Style the buttons inside the tab */ .tab button { display: block; background-color: inherit; color: black; padding: 22px 16px; width: 100%; border: none; outline: none; text-align: left; cursor: pointer; transition: 0.3s; font-size: 17px; } /* Change background color of buttons on hover */ .tab button:hover { background-color: #ddd; } /* Create an active/current "tab button" class */ .tab button.active { background-color: #ccc; } /* Style the tab content */ .tabcontent { float: left; padding: 0px 12px; border: 1px solid #ccc; width: 70%; border-left: none; height: 300px; } </style> </head> <body> <h2>Vertical Tabs</h2> <p>Click on the buttons inside the tabbed menu:</p> <div class="tab"> <button class="tablinks" onclick="openCity(event, 'London')" id="defaultOpen">London</button> <button class="tablinks" onclick="openCity(event, 'Paris')">Paris</button> <button class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</button> </div> <div id="London" class="tabcontent"> <h3>London</h3> <p>London is the capital city of England.</p> </div> <div id="Paris" class="tabcontent"> <h3>Paris</h3> <p>Paris is the capital of France.</p> </div> <div id="Tokyo" class="tabcontent"> <h3>Tokyo</h3> <p>Tokyo is the capital of Japan.</p> </div> <script> function openCity(evt, cityName) { var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("tabcontent"); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = "none"; } tablinks = document.getElementsByClassName("tablinks"); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(" active", ""); } document.getElementById(cityName).style.display = "block"; evt.currentTarget.className += " active"; } // Get the element with id="defaultOpen" and click on it document.getElementById("defaultOpen").click(); </script> </body> </html> Fonte: https://www.w3schools.com/howto/howto_js_vertical_tabs.asp
      Blz, agora digamos que eu tenha saído da pagina onde tem esse Vertical tab e quando retornar eu gostaria de voltar justamente do lugar de onde eu sai.
      Por exemplo, digamos que eu tenha saído do menu na parti Paris para uma pagina onde tem tudo de Paris quando eu apertar no botão voltar eu quero retornar a pagina onde tem o menu e quero que ele fique na opção Paris inclusive marcado. Quando ele volta ele só vai para a primeira opção.
      Tem algum jeito de fazer isso?
    • By Michael Cats
      Bom dia,
      Eu to fazendo um projeto onde preciso ir adicionando eventos.
      Quando eu adiciono dois ou mas do primeiro setor selecionado da tudo certo. 
      Mas quando removo e altero o setor, o select vem duplicado e os eventos vem duplicado também.

       
      Depois de remover e trocar o setor e adicionar novos eventos.

      --- popular a primeira aba que ja vem na pagina.
      $(function(){ $('#setor').change(function(){ if( $(this).val() ) { $('#evento').slideUp(); $.getJSON('function_setor.php?search=',{setor: $(this).val(), ajax: 'true'}, function(j){ var options = '<option value="">Escolha Evento</option>'; for (var i = 0; i < j.length; i++) { options += '<option value="'+j.id+'">'+j.desc+'</option>'; } $('#evento').html(options).slideDown(); }); } else { $('#evento').html('<option value="">Escolha Evento</option>'); } }); }); ---poupula as option dos select quando adiciono novo evento. $('#setor').blur(function(){ var sector = $(this).val(); $("#add").click(function(event) { cont ++; $("#new_add").append('<div class="row" id="campo'+cont+'"><div class="col"><div class="row"><div class="col"><button type="button" id="'+cont+'" class="btn btn-outline-secondary tamanho">-</button></div><div class="col"><select class="custom-select" id="evento'+cont+'" name="evento[]" tabindex="2"><option value="">Escolha Evento</option></select></div></div></div><div class="col"><textarea class="form-control" name="relato[]" id="relato'+cont+'" tabindex="3" placeholder="DESCRIÇÃO DO ACONTECIMENTO" required></textarea></div></div>'); $.getJSON('function_setor.php?search=',{setor: sector, ajax: 'true'}, function(j){ for (var i = 0; i < j.length; i++) { $("#evento"+cont+"").append('<option value="'+j.id+'">'+j.desc+'</option>'); } console.log(j); }); }); });  
      se puder me ajudar com esse problema que so ocorre quando eu troco o setor.
       
    • By Matheus B. Siqueira
      Estou desenvolvendo um código para enviar um texto digitado pelo usuário para outro php, em uma textarea, como abaixo:
       
      <label for="message-text" class="col-form-label">Comentário:</label> <textarea class="form-control" name="situacao" id="situacao"></textarea> Logo após desenvolvi um código em ajax para enviar esta informação para outro php:
       
      $(function inserirComentario(situacao){ $("#enviar_comentario").click(function(){ var situacao = $("#situacao").val(); var id = $('.carousel-item.active').attr('data-id') $.ajax({ url: 'video_professor_comentario.php', data: {'comentario_situacao' : $("#situacao").val()}, type: 'post', dataType:'json', success: function(output) { alert(output); }, error: function(request, status, error){ alert("Error: Could not delete"); } }); location.href='video_professor_comentario.php?id='+id }); }); Porém ao tentar enviar o erro que é apresentado é: 
      Notice: Undefined variable: situacao in C:\xampp\htdocs\tcc\video_professor_comentario.php on line 26
      NULL
       
      O código em PHP, que é enviado, video_professor_comentario.php, consta abaixo:
       
      <?php //se não tiver o parametro, mata a aplicação. if(!isset($_GET['id'])) die(); if (isset($_POST['comentario_situacao'])) { $situacao = $_POST['comentario_situacao']; } //Aqui está um exemplo simples de como fazer uma conexão PDO $host = 'localhost'; $db = 'onteach'; $user = 'root'; $pass = 'root'; $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; try { $pdo = new PDO($dsn, $user, $pass); } catch (PDOException $e) { throw new PDOException($e->getMessage(), (int)$e->getCode()); } var_dump($situacao); $pdo->exec("UPDATE `video_monitor` SET `situacao` = '.$situacao.' WHERE `video_monitor`.`idvideo_monitor` = ".$_GET['id']); var_dump($pdo); ?> <script> alert('Vídeo enviado ao monitor com sucesso!') var_dump($pdo); //location.href='professor.php' </script>  
      Caso alguém souber resolver o erro, seria de muita ajuda para mim, visto que este trabalho é para meu tcc e os professores não ajudam muito!
    • By Luccas Gaulia
      O DataTables está funcionando, todos os Buttons funcionam e chamam a tabela, estou utilizando load para abrir a tabela por ajax, faz o reload normalmente, porém as demais ações não, como:
      Paginação, clica na página 2, muda as descrições abaixo e o número da página, mas não muda as linhas;
      Buscar, não funciona, porém utilizando uma busca externa com myFunction de uma coluna, funciona;
      Ordenar, não funciona, o ícone até muda para baixo ou para cima...
      O que estou entendendo que os valores puxados pelo Ajax da lista gerado pelo PHP estão estáticas e nada muda.
      Quando utilizava o foreach dentro da página e listava tudo, funciona corretamente... Estava querendo separar para poder trabalhar com reload e colocar inserir e editar com modais sem precisar atualizar a página.
      equipAll.php
      <?php include '../datasourceGestao.php'; $datasource = new datasource(); $result = $datasource->getAllEquip(); $row = array(); foreach ($result as $array) { $row[] = array('admin_id' => $array['admin_id'], 'first_name' => $array['first_name'], 'last_name' => $array['last_name'], 'email' => $array['email'], 'gender' => $array['gender'], 'birth_date' => $datasource->invertDate($array['birth_date']), 'telephone' => $array['telephone'], 'mobile' => $array['mobile'], 'nivel' => $array['nivel'], 'status' => $array['status'] ); } $output = array( "draw" => intval($_POST["draw"]), "iTotalRecords" => count($row), "iTotalDisplayRecords" => count($row), "aaData" => $row ); $response = json_encode($output); echo $response; ?> $(document).ready(function () { var table = $('#myTable').DataTable( { dom: 'Bfrtip', processing:true, serverSide:true, ajax:{ "url": "php_action/equipAll.php", "type":"POST" }, autoWidth: false, responsive: true, orderCellsTop: true, bFilter: true, fixedHeader: false, deferRender: true, pagingType: "full_numbers", lengthMenu: [ [ 10, 25, 50, -1 ], [ '10 linhas', '25 linhas', '50 linhas', 'Todos' ] ], searching: true, select: true, select: { style: 'multi+shift', }, columns: [ { data: 'admin_id' }, { data: 'action' }, { data: 'first_name'}, { data: 'last_name' }, { data: 'email' }, { data: 'gender', "defaultContent": "", "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) { if("1"==sData){ $(nTd).html("<i class='fas fa-venus ze-icon-m'></i>"); } else if("2"==sData){ $(nTd).html("<i class='fas fa-mars ze-icon-m'></i>"); } else{ $(nTd).html("<i class='fas fa-venus-mars ze-icon-m'></i>"); } } }, { data: 'birth_date' }, { data: 'telephone' }, { data: 'mobile' }, { data: 'nivel', "defaultContent": "", "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) { if("1"==sData){ $(nTd).html("<i class='fas fa-user-tie ze-icon-m'></i>"); } else{ $(nTd).html("<i class='fas fa-user ze-icon-m'></i>"); } } }, { data: 'status', "defaultContent": "", "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) { if("2"==sData){ $(nTd).html("<i class='fas fa-toggle-on ze-icon-m'></i>"); } else{ $(nTd).html("<i class='fas fa-toggle-off ze-icon-m'></i>"); } } } ], columnDefs: [ { "targets": [ 0 ], "visible": true, "searchable": true, "data": "admin_id" }, { "targets": [ 1 ], "data": null, "defaultContent": "<div class='btn-group' role='group' aria-label='Button group with nested dropdown'><div class='btn-group' role='group'><button id='btnGroupDrop1' type='button' class='btn btn-secondary dropdown-toggle' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'><i class='fas fa-cogs ze-icon-m' aria-hidden='true'></i></button><div class='dropdown-menu' aria-labelledby='btnGroupDrop1'><button type='button' class='btn btn-link' id='Detail' name='Detail'><i class='fas fa-eye ze-icon-m' aria-hidden='true'></i></button><button type='button' class='btn btn-link' id='Edit' name='Edit'><i class='fas fa-edit ze-icon-m'></i></button><button type='button' class='btn btn-link' id='confirmDelete' name='confirmDelete'><i class='fas fa-trash-alt ze-icon-m'></i></button><button type='submit' class='btn btn-link' id ='confirmStatus' name='confirmStatus'><i class='fas fa-toggle-on ze-icon-m'></i></button></div></div></div> " }, { "targets": [ 2 ], "visible": true, "searchable": true, "data": "first_name" }, { "targets": [ 3 ], "visible": true, "searchable": true, "data": "last_name" }, { "targets": [ 4 ], "visible": true, "searchable": true, "data": "email" }, { "targets": [ 5 ], "visible": false, "searchable": true, "data": "gender", }, { "targets": [ 6 ], "visible": false, "searchable": true, "data": "birth_date" }, { "targets": [ 7 ], "visible": false, "searchable": true, "data": "telephone" }, { "targets": [ 8 ], "visible": false, "searchable": true, "data": "mobile" }, { "targets": [ 9 ], "visible": false, "searchable": true, "data": "nivel" }, { "targets": [ 10 ], "visible": false, "searchable": false, "data": "status" } ], buttons: [ { extend: '', text: '<i class="fa fa-user-plus ze-icon-gg" style="color:blue;"></i>', titleAttr: 'Novo Registro', action: function (e, node, config){ $('#myModalInsert').modal('show') } }, { extend: 'pageLength', text: '<i class="fas fa-list-ol ze-icon-gg" style="color:purple;"></i>', titleAttr: 'Mostrar', }, { extend: 'copyHtml5', text: '<i class="fas fa-copy ze-icon-gg" style="color:gray;"></i>', titleAttr: 'Copiar', key: { key: 'c', altKey: true }, exportOptions: { modifier: { page: 'current', columns: ':visible' } } }, { extend: 'excelHtml5', text: '<i class="fas fa-file-excel ze-icon-gg" style="color:green;"></i>', titleAttr: 'Excel', exportOptions: { modifier: { page: 'current', columns: ':visible' } } }, { extend: 'pdfHtml5', text: '<i class="far fa-file-pdf ze-icon-gg" style="color:red; background-color:transparent;"></i>', titleAttr: 'PDF', orientation: 'A4', //portrait or landscape alignment: 'center', pageSize: 'LEGAL', exportOptions: { columns: ':visible' } }, { extend: 'print', text: '<i class="fas fa-print ze-icon-gg" style="color:orange;"></i>', titleAttr: 'Print', exportOptions: { columns: ':visible' } }, { extend: 'colvis', text: '<i class="fas fa-columns ze-icon-gg"></i>', titleAttr: 'Alterar Colunas Visiveis', "columns": ':not(.noVis)' }, { extend: 'selectNone', text: '<i class="fas fa-th ze-icon-gg"></i>', titleAttr: 'Remover todos os selecionados' }, { extend: 'selectRows' , text: '<i class="fas fa-minus ze-icon-gg"></i>', titleAttr: 'Selecionar linha(s)' }, { extend: 'selectColumns', text: '<i class="fas fa-th-large ze-icon-gg"></i>', titleAttr: 'Selecionar coluna(s)' }, { extend: 'selectCells', text: '<i class="fas fa-object-group ze-icon-gg"></i>', titleAttr: 'Selecionar celula(s)' } ], language: { "decimal": "", "emptyTable": "Não avaliação deste registro", "info": "Mostrar de _START_ a _END_ de _TOTAL_ registros", "infoEmpty": "Mostrar 0 de 0 de 0 registros", "infoFiltered": "(Total de _MAX_ registros de entradas)", "infoPostFix": "", "thousands": ",", "lengthMenu": "Mostrar _MENU_ registros", "loadingRecords": "Carregando...", "processing": "Processando...", "search": "Buscar:", "zeroRecords": "Não há registros", "paginate": { "first": "<<", "last": ">>", "next": ">", "previous": "<" }, "loadingRecords": '&nbsp;', "processing": 'Processando...', "aria": { "sortAscending": ": Coluna ativa em ordem ascendente", "sortDescending": ": Coluna ativa em ordem descendente" }, "select": { "rows": { "_": "(Selecionado %d linhas)", "0": "(Nenhuma linha selecionada)", "1": "(Selecionado 1 linha)" }, "columns": { "_": "(Selecionado %d colunas)", "0": "(Nenhuma coluna selecionada)", "1": "(Selecionado 1 coluna)" } }, "buttons": { "copy": "Copiar para a área de transferência", "copyTitle": "Cópia bem sucedida", "copySuccess": { "1": "Uma linha copiada com sucesso", "_": "%d linhas copiadas com sucesso" } } } }); <table id="myTable" class="table table-striped table-hover display nowrap dataTable" cellspacing="0"> <thead class="thead-dark"> <th class="ze-center" data-priority="1">ID</th> <th class="ze-center" data-priority="1">Opções</th> <th class="w-50" data-priority="1">Nome</th> <th class="w-50" data-priority="1">Sobrenome</th> <th class="ze-center">E-mail</th> <th class="ze-center">Gênero</th> <th class="ze-center">Dt Nasc.</th> <th class="ze-center">Telefone</th> <th class="ze-center">Mobile</th> <th class="ze-center">Nivel</th> <th class="ze-center">Status</th> </thead> <tbody> <?php if (count($result) == 0) { ?> <td colspan="4">Não há Membros Cadastrados</td> <?php } else { foreach ($result as $array) { ?> <tr> <td><?php echo utf8_encode($array['admin_id']); ?></td> <td> </td> <td class="ze-left"> <?php echo utf8_encode($array['first_name']); ?> </td> <td><?php echo utf8_encode($array['last_name']); ?></td> <td><?php echo utf8_encode($array['email']); ?></td> <td><?php echo ($array['gender'] == 1 ? "Masculino" : "Feminino"); ?></td> <td><?php echo utf8_encode($array['birth_date']); ?></td> <td><?php echo utf8_encode($array['telephone']); ?></td> <td><?php echo utf8_encode($array['mobile']); ?></td> <td><?php echo utf8_encode($array['nivel']); ?></td> <td><?php echo utf8_encode($array['status']); ?></td> </tr> <?php } } ?> </tbody> <tfoot class="thead-dark"> <th class="ze-center">ID</th> <th class="ze-center">Opções</th> <th>Nome</th> <th>Sobrenome</th> <th class="ze-center">E-mail</th> <th class="ze-center">Gênero</th> <th class="ze-center">Dt Nasc.</th> <th class="ze-center">Telefone</th> <th class="ze-center">Mobile</th> <th class="ze-center">Nivel</th> <th class="ze-center">Status</th> </tfoot> </table>  
    • By Luccas Gaulia
      Ola, Não entendi ainda porque não envia via POST os dados no AJAX, vai direto para o error, e abre o Modal dizendo que houve o erro e rapidamente direciona para a página, mesmo esse modal não sendo para isso... Coloquei o Alert e ele faz a mesma coisa, abre o Alert de Error e direciona para página...
      Não estou utilizando a url:, pois o caminho é o mesma da página e mesmo utilizando, nada muda... colocando em outro php e chamando, também dá erro.
      Preciso entender sobre essa situação para enviar meus dados via POST e ajax
       
      $(document).on("click", '#updateStatusEquip', function() { $.ajax({ type: "POST", data: { value_id : $('#admin_id').val() }, success: function(data) { // Check the output of ajax call on firebug console console.log(data); $(".modal-body-info").html("Sucesso: Status do Registro alterado com sucesso"); $("#myModalMessage").modal("show"); }, error: function () { $(".modal-title").html("Erro"); $(".modal-body-info").html("Erro: Registro não foi inserido"); $("#myModalMessage").modal("show"); } }); });  
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <!-- Modal - Message --> <div class="modal fade" id="myModalMessage" tabindex="-1" role="dialog" aria-labelledby="myModalMessage"> <form method="post" id="ze-form" > <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title"></h4> <button type="button" class="close" id="reloadTable" data-dismiss="modal" aria-label="Fechar"><span aria-hidden="true">&times;</span></button> </div> <div class="modal-body"> <div class="modal-body-info"> <b>Registro de:</b><br>Jonhy<input type="hidden" name="admin_id" id="admin_id" value="2"><br><b>Têm certeza que deseja alterar o status desse registro?</b><br>Poderá não ser capaz de acessar o Sistema</div> </div> <div class="modal-footer"> <button type="button" class="btn btn-danger" id="reloadTable" data-dismiss="modal">Fechar</button> <div class="modal-footer-button"><button type="submit" name="updateStatusEquip" id="updateStatusEquip" title="Alterar..." class="btn btn-warning">Alterar <i class="fas fa-level-up-alt ze-icon-m"></i><i class="fas fa-level-down-alt ze-icon-m"></i> </button></div> </div> </div> </div> </form> </div>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.