Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将对象导出为XML文件,并在AJAX调用中使用Symfony 5强制下载文件_Ajax_Symfony4_Symfony5 - Fatal编程技术网

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

将对象导出为XML文件,并在AJAX调用中使用Symfony 5强制下载文件,ajax,symfony4,symfony5,Ajax,Symfony4,Symfony5,我与symfony 5合作,有一个包含会员详细信息的页面。我现在希望能够从成员导出地址数据。为此,我在页面上有一个按钮,通过AJAX调用控制器中的函数。如果我直接调用站点,那么我确实会得到“保存文件”窗口,因此我会假设我在控制器中做了正确的事情,即使我不是100%确定。实际上,我确实希望强制它自动将文件保存在客户端的特定文件夹中,而不是手动保存,我确实希望用AJAX只需单击一个按钮,但这似乎不起作用。这件事我哪里做错了 myjs.js $('#exportaddress').on("

我与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"'
    )); 
}

这回答了你的问题吗?