在我的Grails应用程序中,用户可以单击g:link
,它将调用我的控制器将某些数据导出到CSV文件。这没有问题。
然后我将该按钮移动到jQuery对话框,当单击该按钮时,我使用
${remoteFunction(action:'export', onSuccess:'closeMe();', id:courseInstance?.id)}
调用相同的控制器方法并关闭对话框。我已经确认实际调用了该方法,并关闭了对话框。但是,不会提示用户使用CSV下载。我假设这与remoteFunction有关,但我不太确定。任何人都可以解释为什么会发生这种情况,以及潜在的解决办法吗?
谢谢!
答案 0 :(得分:1)
对于AJAX请求,您无法处理将内容作为附件下载,因此无法触发“另存为”对话框。
有几种解决方法:
代码可能与this answer中的代码相同:
<script type="text/javascript">
function downloadURL(url) {
var iframe;
var hiddenIFrameID = 'hiddenDownloader';
iframe = document.getElementById(hiddenIFrameID);
if (iframe === null) {
iframe = document.createElement('iframe');
iframe.id = hiddenIFrameID;
iframe.style.display = 'none';
document.body.appendChild(iframe);
}
iframe.src = url;
}
</script>
和链接
<a href="javascript:downloadURL(${createLink(action:'export')})">Export</a>