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 Alesson Mendes
      Fala galera,
      Sou novato em Desenvolvimento Web, e estou precisando fazer uma inserção de dados sem atualizar a pagina.
      Preciso alterar varios valores de uma tabela, portanto fiz um table e dentro dele coloquei um form nos campos que desejo editar.
      O problema que quero utilizar a funçao onblur para fazer o submit a cada alteração. Consegui fazer isto definindo a rota no formulário e criando uma função javascript onblur.
      Porém ele manda para meu php, onde insere os dados mas redireciona a rota.
      vi em varios outros foruns, mas nao consegui implementar o AJAX no meu projeto.
      Conseguem me dar uma mão na no codigo, como utilizo o AJAX com o laravel.
      Muito obrigado
       
       
      <script type="text/javascript">
          $(document).ready(function(){
              $("#prest").on('blur', function() { //evento de sair de foco do edit
                  
                  var valor = $('#prest').val();
               $('#form').submit();//efetua submit no formulario
              });
                 
          });
      </script>
       
       
       
      <table>
                  <thead>
                      <tr>
                          <th>Cotação</th>
                          <th>Codigo</th>
                          <th>Descrição</th>
                          <th>Cod Barras</th>
                          <th>Qtde Cotação</th>
                      </tr>
                  </thead>
                  <tbody>
                      @foreach($registros as $registro)
                      <tr>
                          <td>{{ $registro->prod_codigo }}</td>
                          <td>{{ $registro->prod_descricao }}</td>
                          <td>{{ $registro->prod_barras}}</td>
                          <td>{{ $registro->prod_qtde}}</td>
                          <td>
                              <form action="{{ route('preco.incluir' , $registro->id) }}" method="post" class="" id="form" name="form" enctype="multipart/form-data">
                                  {{csrf_field()}}
                                  <input type="hidden" name="_method" value="put">
                                  <input type="text" name="prest" id="prest" value="" >
                              </form>
                          </td>
                      </tr>
                      @endforeach
                              </tbody>
                          </table>
    • By Dineysil
      Boa tarde!
       
      Sou iniciante em Javascript e Ajax e estou precisando de criar uma função para:
      Em um Form tenho dois "radios" jurídico e físico, preciso que ao clicar em uma opção no form alterne uma "Label" e uma "Text"
      Se a opção for Físico a Label será CPF: e a Text terá uma mascara de cpf
      Se a opção for Jurídico a Label será CNPJ: e a Text terá uma mascara de cnpj
       
      Com relação as máscaras eu já as tenho.
       
      O site está em ASP Clássico

      Agradeço se alguém poder ajudar.
       
      Claudiney
    • By andrelimaverde
      Pessoal preciso de uma ajuda, desde já agradeço à todos.
      "Site teste, estudos..."
      Tenho um formulário com 3 etapas, ele está trabalhando em php normalmente e salvando os dados preenchidos em .txt (para testes apenas).
      Vamos lá, nas 3 etapas o form está com action="1.php" (2.php,  3.php) e method="post". [Não vou colocar muito código para simplificar, pois é um formulário básico fácil de entender]
      Exemplo:  Pagina 1 - envia para action '1.php'
      Nome: 
      Telefone:
      <input type="submit" value="Continuar">
      (
       O arquivo 1.php armazena os dados e redireciona => header( 'Location:Pagina2.php' ) ;   
       Assim como os outros php's
      )
      Pagina 2 - action 2.php armazena os dados e redireciona => header( 'Location:Pagina3.php' ) ; 
      Cidade:
      Endereço:
      <input type="submit" value="Continuar">
       
      A questão está na 3ª página
      Página 3 -
      Email:
      (Preciso que após preencher o campo da página 3 no caso "Email:",  ao clicar no botão, neste caso não sei se seria um submit ou button. O formulário não redirecionar para pagina 4, ao clicar ele enviar e salvar normalmente, mas aparecer um novo input na mesma pagina por Exemplo:"Twitter:"  ) 
      No caso preciso que ele não redirecione , gostaria de colocar um gif de carregando por 15 segundos por exemplo como se estivesse processando as informações... e em seguida ele apresentar o novo input do "Twitter:" , onde ai sim enviaria normalmente...
    • By gust.php
      Prezados, boa noite.
       
      Tenho uma lista com vários registros, quero selecionar alguns registros e enviá-los para serem faturados. Estou tentando assim:
       
      Se eu tirar o $.ajax e colocar um alert(id), ele mostra todos os IDs selecionados, direitinho. Usando o ajax não estou conseguindo chamar minha Action no controller.
       
      Podem ajudar?
      // BOTÃO <input type="submit" value="Faturar Serviço" id="envia" class="btn btn-success pull-right" disabled="true"> // checkBox <th class="text-sm"><input type="checkbox" class="checkbox" name="id" id="id" value="<?php echo $le->getIDSERVICO(); ?>"></th> <script> $(function(){ $("[name='id']").change(function(){ var countSelected = $("input[name='id']:checked").length; var $btnEnviar = $('#envia'); $btnEnviar.prop("disabled", countSelected == 0); $btnEnviar.val('Faturar Serviço' + (countSelected > 1 ? 's' : '')); }); }); $(document).ready(function() { $("#envia").click(function(){ var ids = []; $.each($("input[name='id']:checked"), function(){ ids.push($(this).val()); }); $.ajax({ method: 'POST', url: '/sgt/financeiro/faturaServicosSelecionados', data: { ids: ids } }); }); }); </script>  
       
    • By alh
      Tenho uma requisição em ajax!
      O que está acontecendo de errado pois não estou sendo redirecionado na funçao que estou executando no php pelo ajax.
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script type="text/javascript"> //EFETUAR LOGIN function efetuarLogin() { var usuarioAcesso = $("#usuarioAcesso").val(); var senhaAcesso = $("#senhaAcesso").val(); var botao_acao = $("#tipo_login").val(); $.ajax({ type: "POST", url: "envia_assinatura.php", data: {'usuarioAcesso':usuarioAcesso,'senhaAcesso':senhaAcesso,'botao_acao':botao_acao}, dataType: "json", success: function(json){ alert('teste'); } }); }; </script> <div style="width:400px; float:left;"> <input type="text" name="usuarioAcesso" id="usuarioAcesso"> <input type="password" name="senhaAcesso" id="senhaAcesso"> <input type="submit" name="botao_login" id="botao_login" value="Login"> <input type="hidden" name="tipo_login" id="tipo_login" value="login"> <button class="btn-success" type="submit" onclick="efetuarLogin()" >LOGIN</button> </div>  
      A página "envia_assinatura.php"
      É um header para retornar a uma página:
      <?php header("location: teste"); ?>
×

Important Information

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