我想将大量缓存的json数据从导入过程发送到MVC控制器,MVC控制器将以CSV格式响应文本文件。
问题是如果我使用AJAX调用,浏览器无法处理响应并下载文件。
如果我使用常规表单帖子,那么浏览器将处理返回的文件响应。但是,AFAIK发布一个表单我无法发送Json数据而且我不想在查询字符串上发送数据。
好像我在岩石和坚硬的地方之间。实现这一目标的最佳选择是什么?我想避免将数据文件写入服务器。基本上我只想发送大量的json数据并作为下载请求返回给浏览器。
答案 0 :(得分:1)
只是我的两分钱。如果您不想创建文件,只需在会话中(或您喜欢的任何地方)缓存数据。
所以:
除了没有文件外,它与保存文件服务器端非常相似。
答案 1 :(得分:0)
雅法,
你可以从SO上的这篇文章中获得灵感:
How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?
在实践中,我通过ajax发布json对象当然是在我的应用程序的管理部分。至于发送回csv输出,通过partialupdate(即调用保存对话框)很难(如果不是不可能的话)。你当然可以将csv作为部分返回并填充div,但我想这不是一个可接受的解决方案。
答案 2 :(得分:0)
我想我会将JSON数据分配给<input type='hidden'/>
,然后执行$('form').submit()
。
答案 3 :(得分:0)
实际上,我认为最好的解决方案如下:
data:
URI方案查看CSV:直接
location.href = "data:text/csv;charset=utf-8,Value 1, Value 2, Value 3";
或在AJAX完成时准备一个链接,如下所示:
<a href="data:text/csv;charset=utf-8,Value 1, Value 2, Value 3">Conversion finished. Save</a>
这适用于IE8中的限制。完全支持IE9,当然还有其他地方。