【发布时间】:2014-03-07 08:03:08
【问题描述】:
我正在尝试对向其发送 JSON 数据的服务器进行 POST 调用。服务器获取 JSON 数据,进行一些处理,然后发回 Excel .xlsx 作为响应。我希望浏览器打开“将文件另存为”对话框供用户保存。我一直在寻找一个干净的解决方案来做到这一点。但是这个问题JavaScript/jQuery to download file via POST with JSON data 的一个可能解决方案建议将 Excel 文件保存在服务器上,然后发回 URL 链接,然后打开 iframe 供用户下载。这对我来说是不行的,因为用户可以在服务器上创建数千个 Excel 文件,而服务器的保存空间有限。我希望解决方案是即时的。我见过的另一个解决方案建议将数据转换为表单,然后使用表单提交。同样,这是不行的,因为我的数据在数百个甚至数千个 Excel 行的范围内。
我的 jQuery POST 调用:
$.ajax({ 类型:'POST', url: '/服务器/路径', 数据:JSON.stringify(dataSent), 处理数据:假, 成功:函数(数据,文本状态,jqXHR){ }, 错误:函数(结果,状态,错误){ }, 内容类型:'应用程序/json', 数据类型:“应用程序/vnd.ms-excel” });在后台我设置了这个:
Response.header("Content-Type", "application/vnd.ms-excel")
Response.header("Content-Disposition", "attachment; filename=\"export.xlsx\"")
强制浏览器打开“将文件另存为...”对话框的最佳方法是什么?
谢谢,
【问题讨论】:
-
使用“在服务器上另存为 Excel”方法,您不应该将 Excel 文件留在服务器上。要么将文件作为进程的一部分删除,要么定期清理一些后台进程。没有人希望您永远在服务器上留下 1000 多个 excel 文件
-
为什么你认为使用表单的 POST(而不是 GET)在某种程度上比 Jquery POST 在可以发送的数据量上更受限制?在下面,它们是相同的过程。
标签: javascript jquery json excel rest