弹出“文件正在下载”的提示框;但是什么都没有发生


Pop up saying "File is Downloading" but nothing is happening

基本上我有一个网站,让用户输入两个日期。当他们单击submit时,将显示一个表,其中只显示这两个日期之间的数据。

当我点击下载按钮时,一个弹出窗口显示文件正在下载,但是没有任何反应。

我已经在谷歌上搜索了这个问题的一些答案,但是虽然我没有得到任何错误,但文件仍然无法下载。我应该试试别的方法吗?

下面是我的php代码:
<?php
    session_start();
    include_once("Connection.php");
    $StartDate = $_POST['startDate'];
    $EndDate = $_POST['endDate'];
    $InstructorID = $_SESSION["InstructorID"];

    $sql = "SELECT Instructors.InstructorName, Class.ClassName, Class.ClassType, CLASS_STUDENT.Semester, CLASS_STUDENT.Year, Students.StudentName, TUTOR_STUDENT.ClassID, TUTOR_STUDENT.Date, 
        TUTOR_STUDENT.TopicCovered, TUTOR_STUDENT.BeginTime, TUTOR_STUDENT.EndTime, TUTOR_STUDENT.TotalMinutes, Tutors.TutorName, TUTOR_STUDENT.Categories
        FROM Instructors
        INNER JOIN Class
        ON Instructors.InstructorID = Class.InstructorID
        INNER JOIN CLASS_STUDENT
        ON Class.ClassID = CLASS_STUDENT.ClassID
        INNER JOIN Students
        ON CLASS_STUDENT.StudentUsername = Students.StudentUsername
        INNER JOIN TUTOR_STUDENT
        ON Students.StudentUsername = TUTOR_STUDENT.StudentUsername
        INNER JOIN Tutors
        ON TUTOR_STUDENT.TutorUsername = Tutors.TutorUsername
        WHERE TUTOR_STUDENT.Date >= '$StartDate' AND TUTOR_STUDENT.Date <= '$EndDate' AND TUTOR_STUDENT.ClassID = CLASS_STUDENT.ClassID
        ORDER BY TUTOR_STUDENT.Date";
    $result = mysqli_query($link, $sql);
    if ($result->num_rows > 0)
    {
        echo " 
                    <table>
                        <tr>
                            <th>Date</th>
                            <th>Class Name</th>
                            <th>Year</th>
                            <th>Semester</th>
                            <th>Topic Covered</th>
                            <th>Begin Time</th>
                            <th>End Time</th>
                            <th>Total Minutes</th>
                            <th>Tutor Name</th>
                            <th>Student Name</th>
                            <th>Catergory</th>
                        </tr>
                            ";
                            // output data of each row
                while($row = $result->fetch_assoc()) 
                {
                        echo "
                            <tr>
                                <td>".$row["Date"]. "</td>
                         ";
                         echo "
                                <td>".$row["ClassName"]. "</td>
                         ";
                         echo "
                                <td>".$row["Year"]. "</td>
                         ";
                         echo "
                                <td>".$row["Semester"]. "</td>
                         ";
                         echo "
                                <td>".$row["TopicCovered"]. "</td>
                         ";
                         echo "
                                <td>".$row["BeginTime"]. "</td>
                         ";
                          echo "
                                <td>".$row["EndTime"]. "</td>
                         ";
                         echo "
                                <td>".$row["TotalMinutes"]. "</td>
                         ";
                          echo "
                                <td>".$row["TutorName"]. "</td>
                         ";
                         echo "
                                <td>".$row["StudentName"]. "</td>
                         ";
                         echo "
                                <td>".$row["Categories"]. "</td>
                         ";
                        echo "</tr>";
                                   }
                        echo "</table>";
    }
    else
        echo "You have no tutoring sessions between those two dates.";
     if (isset($_POST['downloadAdminDate']))
    {
         $data = "Date,ClassName,Year,Semester,TopicCovered,BeginTime,EndDate,TotalMinutes,TutorName,StudentName,Categories'n";
         while($row = mysqli_fetch_array($result))
         {
            $data.=$row['Date'].",";
            $data.=$row['ClassName'].",";
            $data.=$row['Year'].",";
            $data.=$row['Semester'].",";
            $data.=$row['TopicCovered']."'n";
            $data.=$row['BeginTime'].",";
            $data.=$row['EndTime'].",";
            $data.=$row['TotalMinutes'].",";
            $data.=$row['TutorName'].",";
            $data.=$row['StudentName']."'n";
            $data.=$row['Categories']."'n";
         }
        $data_final = chr(255).chr(254).mb_convert_encoding($data, "UTF-16LE","UTF-8");
        header("Content-type: text/csv; charset=UTF-8");
        header("Content-Disposition: attachment; filename=Export.csv");
        print $data_final;
        exit;

    }

    mysqli_close($link);

?>

HTML:

    <p id ="byDate"> Search all tutoring sessions by date.</p>
        <form id ="SearchByDate" action ="AdminDate.php" method="post">
            Start Date <input = "textbox" type="date" name ="startDate" value="" required/>
            End Date <input = "textbox" type="date" name ="endDate" value="" required/> </br>
            </br>
            <button class ="button" type="submit" name = "searchDateSubmit" id ="searchDateSubmit" value ="submit"> Submit </button>
        </form>
        </br>
        </br>
        <div id ="searchDateContainer"> Date results are displayed here.
        </div>
        </br>
        </br>
         <form id ="downloadAdminDate" action="AdminDate.php" method="post">
        <button class ="download" type="submit" name ="downloadAdminDate" id              ="downloadDate" value="submit"> Download File </button>
        </form>

你似乎在输出

 <table>

之前
 header("Content-type: text/csv; charset=UTF-8"); 

在最后一个if内。您不能这样做,因为需要在输出任何内容之前输出标头。我建议你把

中的代码
if (isset($_POST['downloadAdminDate'])) {

在另一个php文件AdminDateDownload.php中然后将第二个表单的动作更改为:

<form id ="downloadAdminDate" action="AdminDateDownload.php" method="post" target="_blank">

add target="_blank"以便您更容易理解发生了什么