有没有办法返回动态服务器端生成的文件,该文件是从ajax post结构中获取的?
编写一个小型web mvc项目,该项目生成一个数据列表(数据是从复杂的聚合查询生成的,不能从id或任何地方调用),然后到达我想要导出一些选定的部分部分到文件并下载。
它是如何工作的: 1.在页面上,我选择一些包含关键数据的字段(使用JQuery DataTable) 2.将其发送到控制器(准确地说是Spring) 3.生成一个字节流并将其作为HTTPResponse返回,其中包含" Content-disposition"," attachment"报头中。
事实是,我选择行并使用JQuery-> Ajax形成所需的数据,因此Controller-> Post的结果保留在javascript部分内,而不是给我一个"另存为.. "
我已经考虑过一个临时目录或其他东西,但是为最后一个保存选项。
答案 0 :(得分:1)
不幸的是,您无法通过ajax获取文件,但您可以通过动态生成表单并提交它来实现。根据我们对生成表单的评论讨论并提交它,你可以做这样的事情。
function autoSubmitForm(method, url, post_data) {
var element = document.getElementById("virtual_form");
if(element != null )
{
element.parentNode.removeChild(element);
}
var form = document.createElement("form");
form.setAttribute("id", "virtual_form");
form.setAttribute("style", "display:none;");
form.method = method;
form.action = url;
for(i in post_data)
{
var element=document.createElement("input");
element.value=post_data[i];
element.name=i;
form.appendChild(element);
}
document.body.appendChild(form);
form.submit();
}
autoSubmitForm('POST','your_url.php',{id:"xyz",other_input:"input value"});
这里{id:"xyz",other_input:"input value"}
是发布数据的对象,您可以动态地定义它对字段名称和字段值。将其传递给函数。