Problemas com retorno AJAX(LARAVEL)

10 respostas Resolvido
php5.3ajaxprogramaçãolaravel
emersonandre
`<script type="text/javascript">
    $(document).ready(function(){
        $('#btn_busca_f').click(function () {
            var data_ini = $('#data_ini').val();
            var data_fim = $('#data_fim').val();
            var cod_recurso = $('#cod_recurso').val();
            var cod_funcionario = $('#cod_funcionario').val();
            var num_op = $('#num_op').val();
            $.ajax({
                type: 'post',
                async: false,
                url: '/intranet/ExportaFimApontamento',
                data:{
                    '_token': '{{csrf_token()}}',
                    'data_ini': data_ini, 
                    'data_fim': data_fim, 
                    'cod_recurso': cod_recurso,
                    'cod_funcionario': cod_funcionario,
                    'num_op': num_op
                },
                erro: function () {
                    alert('erro');
                },
                success: function (data) {
                    return (data);
                    alert('Excel Gerado com Sucesso!');
                }
            });
        });
    });
</script>`

este script executa uma função no controller onde ele gera um arquivo excel.xls, porem se eu executar a função direto no controler(sem passar pela pagina) ele funciona, se eu executar com o script(ai em cima) ele funciona mas nao gera o arquivo.xls, ele gera o preview e o response pelo F12 navegador mas nao baixa o excel. alguem sabe como posso fazer para que ele baixe o arquivo ao executar o script?

10 Respostas

javaflex

Qual necessidade real de usar ajax pro usuário baixar um arquivo? Eu pelo menos nunca precisei.

emersonandre

necessidade nenhuma, só preciso gerar o arquivo. de alguma forma preciso gerar o arquivo.

javaflex

Segue um exemplo pra ilustrar:

<form action="/caminho/exportar" method="post">
  <input type="hidden" name="parametro1" value="?">
  <input type="hidden" name="parametro2" value="?">
  <button onclick="document.body.onbeforeunload = null" target="_blank">Download</button>
</form>
emersonandre

uam forma era usar isso na view dos dados… acho que vai ser a solução. um form hide para download

javaflex

Foi só um exemplo, pode ser hidden assim como diretamente o input text do seu form.

emersonandre

sim entendi seu exemplo… voce acha que ficaria ruim fazer um form ou um input hiden e gerar apartir disso ?

javaflex

Se tiver a necessidade de fazer isso, pode fazer. Só não precisa caso os inputs do filtro já estiverem no form usado pelo usuário.

emersonandre

vou ter que fazer… porque carrego os dados em uma tabela dinâmica, que o usuário pode manipular. em outra tela. entao vou precisar enviar as variáveis para a view, para gerar o download posteriormente.

javaflex
Solucao aceita

Então segue em frente nisso.

Só um detalhe, copiei e colei mas não precisa dessa parte do código:

onclick="document.body.onbeforeunload = null"

Exemplo mais limpo:

<form action="/caminho/exportar" method="post">
  <input type="text" name="parametro1" value="?">
  <input type="hidden" name="parametro2" value="?">
  <button target="_blank">Download</button>
</form>
emersonandre

Valeu pela ajuda…

Criado 13 de março de 2019
Ultima resposta 13 de mar. de 2019
Respostas 10
Participantes 2