1

我正在构建一个 grails 应用程序,该应用程序需要导入一个完整的 html 网络结构(包括导航和它自己的 js/css),以便能够使用 ajax 调用从现有控制器中添加一些功能。

到目前为止,一切都按预期工作,导入的 html 在 /webapp/ImportedHtml 中可见,并且每个 ajax url/js/css 都需要额外注意,具体取决于它所指向的内容(grails 应用程序 url 或导入的 html ulrs)。

然而,我的第一个问题是以可下载文件调用的形式出现的。这是我的代码:

 <form id="uploadForm"  action="asyncGetFiles"  method="post"> 
   <input id="testbutton" type="submit" value="Submit" />
 </form>   

一个非常简单的表单,带有提交,触发Jquery Form Plugin提供的 javascript 调用

     $('#testbutton').click(function(){
        // Takes in a list of files to be downloaded from .downloads
        var downloads_container =new Array();
        $('.downloads').each(function(){
            downloads_container.push($(this).val());
        });
        var __onSuccess = function(data) {
            // Opens the request in a new window to prevent the current from being modified or redirected
            var OpenWindow=window.open('', '_blank');
            OpenWindow.document.write(data);
            OpenWindow.document.close();
            self.name="main";

        };
        var options = {

            success: __onSuccess,
            data : {
                result:''+downloads_container
            }
        //,                url : '../../dataCart/asyncGetFiles'

        };
        $('#uploadForm').ajaxForm(options);
    }

我的控制器下载代码非常简单,如下所示:

 response.setContentType("application/zip")
 response.setHeader("Content-Disposition", "attachment; filename=\"" + "pictureName" + "\"");
 response.outputStream << "whatever I dont care";
 return;

总之,我当前的代码是这样组织的

  • /rootApp /webapp /htmlRoot /downloads /downloads.html
    • 到服务器看起来像
    • /rootApp /htmlRoot /downloads /downloads.html
    • ajax url 看起来像这样
      • ../ ../ 控制器/ asyncGetFiles
    • 从这里发起的对 ajax 的任何调用都将导致没有下载触发但调用成功并呈现为纯字符串

但是,如果我将相同的代码设置为控制器的视图文件夹

  • /rootApp/controller/downloads.gsp

    • 指向 asyncGetFiles 的 ajax 调用
    • 调用将成功触发下载

问题是:为什么在第一种情况下没有触发下载?

我不知道在哪里可以找到有关如何解决此问题的信息:/

4

0 回答 0