Cześć, piszę skrypt który po wciśnięciu przycisku wysyła dane metodą **POST ** do skryptu **php ** a on tworzy plik z danymi Excel.

Problem jest taki że po wysłaniu danych skrypt się nie wykonuję (o ile dane w ogóle zostają wysłane).

Plik: getExcel.php

<?php
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
    if(isset($_POST['excel']) && !empty($_POST['excel']))
    {

        require_once("database.php");
        require_once("Classes/PHPExcel.php");
    
        $PHPExcel = new PHPExcel();
    
        $PHPExcel->getActiveSheet()->setCellValue('A1', 'Id');
        $PHPExcel->getActiveSheet()->setCellValue('B1', 'First name');
        $PHPExcel->getActiveSheet()->setCellValue('C1', 'Last name');
        $PHPExcel->getActiveSheet()->setCellValue('D1', 'Email');
        $PHPExcel->getActiveSheet()->setCellValue('E1', 'City');
        $PHPExcel->getActiveSheet()->setCellValue('F1', 'Money');
    
        $export = "%" . $_POST['excel'] . "%";
        
        $sql = "SELECT * FROM users WHERE id LIKE :export OR first_name LIKE :export OR last_name LIKE :export OR email LIKE :export OR city LIKE :export OR money LIKE :export";
        
        $records = $conn->prepare($sql);
        $records->bindParam(':export', $export);
        $records->execute();
    
        if($records->rowCount() > 0)
        {
            $i = 1;
            while($results = $records->fetch(PDO::FETCH_OBJ))
            {
                $i++;
                $PHPExcel->getActiveSheet()->setCellValue('A' . $i, $results->id);
                $PHPExcel->getActiveSheet()->setCellValue('B' . $i, $results->first_name);
                $PHPExcel->getActiveSheet()->setCellValue('C' . $i, $results->last_name);
                $PHPExcel->getActiveSheet()->setCellValue('D' . $i, $results->email);
                $PHPExcel->getActiveSheet()->setCellValue('E' . $i, $results->city);
                $PHPExcel->getActiveSheet()->setCellValue('F' . $i, $results->money);
            }
        }
    
        $PHPExcel->getActiveSheet()->setTitle('users');
        
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="users.xlsx"');
        header('Cache-Control: max-age=0');
            
        $objWriter = PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007');
        $objWriter->save('php://output');
    }
}
else
{
    header("Location: /livesearch/");
}
?>

Plik: main.js

$(document).ready(function(){

    /* Search */
    $("#search").keyup(function(){
        var search = $(this).val();
        if(search){
            $.ajax({
                type:'POST',
                url:'search.php',
                data:'search='+search,
                success:function(html){
                    $('#tbody').html(html);
                }
            }); 
        }
    });

    /* Export to Excel */
    $("#excel").click(function(){
        var value = $("#search").val();

        if(value)
        {
            $.ajax({
                type:'POST',
                url:'getExcel.php',
                dataType:'json',
                data:{excel: value},
                //data:'excel='+value,
                success:function(data)
                {
                    console.log('Success: ' + value);
                },
                error:function(data)
                {
                    console.log('Error: ' + value);
                }
            });
        }

    });

});

Kod od " / Export to Excel / ".

Wydaję mi się że kod JS jest prawidłowy jednak w konsoli pojawia się **error **a plik **excel **nie jest tworzony.

Plik getExcel.php raczej jest prawidłowy ponieważ gdy wysyłam tam dane metodą **POST **"ręcznie" to wszystko działa.

<form method="POST" action="getExcel.php">
    <input type="text" name="excel">
    <input type="submit" value="Ok">
</form>