将对象导出为XML文件,并通过Symfony 5在AJAX调用中强制下载文件

问题描述

我使用symfony 5,并且有一个包含会员详细信息的页面。我现在希望能够从会员中导出地址数据。为此,我在页面上有一个按钮,可通过AJAX在我的控制器中调用一个函数。如果我直接调用该站点,那么我会得到“保存文件”窗口,因此即使我不确定100%肯定也要在控制器中做正确的事情。实际上,我确实想强迫它自动将文件保存在客户端的特定文件夹中,而不是我手动进行,并且我确实希望仅通过AJAX按钮单击即可,但这似乎不起作用。我在哪里出错了?

myjs.js

 $('#exportaddress').on("click",function(){
  
    $.ajax({
        type: 'post',url: "/export-address",success: function (response) {

         
        }
    });
});

mycontroller.php

/**
 * @Route("/export-address",name="export_address")
 */
public function memberExport(){

    $memberId= '123';
    $em = $this->getDoctrine()->getManager();
    $memberData = $em->getRepository(Member::class)->getAddressData($memberId);
    $encoders = [new XmlEncoder(),new JsonEncoder()];
    $normalizers = [new ObjectNormalizer()];
    $serializer = new Serializer($normalizers,$encoders);
    $jsonContent = $serializer->serialize($order,'xml',['groups' => 'address_data']);

    return new Response($jsonContent,200,array(
        'Content-Type' => 'application/force-download','Content-Disposition' => 'attachment; filename="export.xml"'
    )); 
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)