使用$ .ajax调用返回附件

我的页面上有一个iframe,在iframe中我执行代码:

$.ajax({ url: '/SamplePage/ExportToExcel', async: false, data: par, type: 'POST' }); 

响应被很好地返回,但是我没有得到“SAVE ATTACHMENT”对话框,没有任何反应……为了清楚起见,标题很好(内容处理,mime类型等),就像我使用普通表单提交执行导出一样有用。 它似乎与ajax调用有关。 它会以某种方式工作吗?

谢谢

使用AJAX时,您将无法获得“另存为”对话框。 如果您想要获得此对话框,只需提供下载文件的常规链接:

 download 

或者如果您需要POST请求:

 

当您使用AJAX下载文件时,将在成功回调时检索此文件的内容,但您无法使用它进行检索:您无法将其保存到客户端计算机,也无法获得“另存为”对话框。

为了扩展Darin的答案,我就是这样做的:

我有一个隐藏的表单,隐藏的输入元素用于动态保存我希望转换/导出的值:

  

然后我有这个jQuery代码用post参数动态填充元素,然后提交表单。

 $('#svg_export_form > input[name=svg]').val(svg_code); $('#svg_export_form').attr('action','api/reports/convert/svg/to/png'); $('#svg_export_form').submit(); 

并且因为返回的响应(来自api调用)具有Content Disposition标头集,此表单提交操作将不会导航用户离开当前页面(但只是返回附件),就像普通表单提交一样,因此仍然保持幻觉一个典型的Ajax提交:-)