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