代码之家  ›  专栏  ›  技术社区  ›  DhiaEddine Ayadi

egyg33k包,从ajax调用生成csv

  •  1
  • DhiaEddine Ayadi  · 技术社区  · 7 年前

    我试图生成一个csv文件与egyg33k捆绑包,我在我的symfony项目中使用。

    Photo 1

    ajax调用:

    $(document).ready(function() {
    $("#get_extract").on("click", function() {
        $.ajax({
            method: "POST",
            url: "/back-office/extraction",
            data: {
                begin_date: $("#begin_date").val(),
                end_date: $("#end_date").val()
            }
        })
    });
    });
    

    菲律宾比索:

    public function getExtractRecordsAction(Request $request)
    {
        if ($request->isXmlHttpRequest() || $request->query->get('showJson') == 1) {
            $beginDate = $request->get('begin_date');
            $endDate   = $request->get('end_date');
    
            $recordsRepository = $this->getDoctrine()->getRepository(Record::class);
            $query             = $recordsRepository->createQueryBuilder('r')
                 ->where('r.createdAt BETWEEN :beginDate AND :endDate')
                ->setParameter('beginDate', $beginDate)
                ->setParameter('endDate', $endDate)
                ->getQuery();
    
            $records = $query->getResult();
            $writer = $this->container->get('egyg33k.csv.writer');
            $csv    = $writer::createFromFileObject(new \SplTempFileObject());
            $csv->insertOne([
                'ID',
                'FIRST_NAME',
                'LAST_NAME',
                'CIVILITY',
                'PHONE_NUMBER',
                'EMAIL',
                'ZIP_CODE',
                'OPTIN',
    
            ]);
            foreach ($records as $record) {
                $csv->insertOne([
                    $record->getId(),
                    $record->getPersonalDetails()->getFirstName(),
                    $record->getPersonalDetails()->getLastName(),
                    $record->getPersonalDetails()->getCivility(),
                    $record->getPersonalDetails()->getPhoneNumber(),
                    $record->getPersonalDetails()->getEmail(),
                    $record->getPersonalDetails()->getZipCode(),
                    $record->getPersonalDetails()->getOptin(),
    
                   
                ]);
            }
            $csv->output('EXAMPLE.csv');
            exit();
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Matt    7 年前

    再见,请扩展你的ajax调用,它只需要下载你需要的数据就可以强制下载文件。实际上,ajax调用将数据从远程浏览器传输到本地浏览器,因此您只需要一种方法,让浏览器将所有内容放入一个文件中并开始本地下载(从浏览器到下载文件夹)

    $("#get_extract").on("click", function() { $.ajax({ method: "POST", url: "/back-office/extraction", data: { begin_date: $("#begin_date").val(), end_date: $("#end_date").val() }, success: function(csv_content) { let filename = 'data.csv'; let csvFile = new Blob([csv_content], {type: "text/csv"}); let downloadLink = document.createElement("a"); downloadLink.download = filename; downloadLink.href = window.URL.createObjectURL(csvFile); document.body.appendChild(downloadLink); downloadLink.click(); } })

    推荐文章