gpt4 book ai didi

从 remoteFunction 调用 Grails 文件下载不会启动

转载 作者:行者123 更新时间:2023-12-02 15:34:49 25 4
gpt4 key购买 nike

在我的 Grails 应用程序中,用户可以单击 g:link这将调用我的 Controller 将某些数据导出到 CSV 文件。这没有问题。

然后我将该按钮移动到一个 jQuery 对话框中,当单击该按钮时,我使用
${remoteFunction(action:'export', onSuccess:'closeMe();', id:courseInstance?.id)}
调用相同的 Controller 方法并关闭对话框。我已经确认该方法被实际调用,并且对话框关闭。但是,不会提示用户使用 CSV 下载。我假设这与 remoteFunction 有关,但我不太确定。谁能解释为什么会发生这种情况以及潜在的解决方法?

谢谢!

最佳答案

使用 AJAX 请求,您无法将内容下载为附件,因此无法触发“另存为”对话框。

有几个解决方法:

  • 像以前一样使用普通的 g:link 并绑定(bind) 'closeMe();' 'click' 事件的函数。问题是您无法控制错误或成功响应。
  • 使用 iframe:您可以创建一个临时不可见的 iframe,并将其位置设置为要下载的文件的 URL。它也有不控制成功/错误响应的背面。

  • 代码可能与 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>

    关于从 remoteFunction 调用 Grails 文件下载不会启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13205294/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com