我正在构建一个 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 调用
- 调用将成功触发下载
问题是:为什么在第一种情况下没有触发下载?
我不知道在哪里可以找到有关如何解决此问题的信息:/