Handle file download from ajax post

前端 未结 20 3059
心在旅途
心在旅途 2020-11-21 05:46

I have a javascript app that sends ajax POST requests to a certain URL. Response might be a JSON string or it might be a file (as an attachment). I can easily detect Content

20条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-21 06:23

    there is another solution to download a web page in ajax. But I am referring to a page that must first be processed and then downloaded.

    First you need to separate the page processing from the results download.

    1) Only the page calculations are made in the ajax call.

    $.post("CalculusPage.php", { calculusFunction: true, ID: 29, data1: "a", data2: "b" },
    
           function(data, status) 
           {
                if (status == "success") 
                {
                    /* 2) In the answer the page that uses the previous calculations is downloaded. For example, this can be a page that prints the results of a table calculated in the ajax call. */
                    window.location.href = DownloadPage.php+"?ID="+29;
                }               
           }
    );
    
    // For example: in the CalculusPage.php
    
        if ( !empty($_POST["calculusFunction"]) ) 
        {
            $ID = $_POST["ID"];
    
            $query = "INSERT INTO ExamplePage (data1, data2) VALUES ('".$_POST["data1"]."', '".$_POST["data2"]."') WHERE id = ".$ID;
            ...
        }
    
    // For example: in the DownloadPage.php
    
        $ID = $_GET["ID"];
    
        $sede = "SELECT * FROM ExamplePage WHERE id = ".$ID;
        ...
    
        $filename="Export_Data.xls";
        header("Content-Type: application/vnd.ms-excel");
        header("Content-Disposition: inline; filename=$filename");
    
        ...
    

    I hope this solution can be useful for many, as it was for me.

提交回复
热议问题