Problemas com retorno AJAX(LARAVEL)

`<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?

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

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

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>

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

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

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

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.

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.

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>

Valeu pela ajuda…

1 curtida