jQuery使用AJAX调用传递文件
如果我有一个返回CSV的AJAX调用,如何让浏览器提示用户下载? 下面,ProductsExport将在成功数据中返回CSV。 我只需要用@替换//将文件传递给用户行…
$.ajax({ type: "POST", url: "/Search/ProductsExport", data: $('#CustomerId').serialize(), success: function (data) { // Deliver file to user!! }, error: function (xhr, textstatus, errorThrown) { alert('Error'); } })
我后面的C#代码如下所示:
var aFileContent = Encoding.ASCII.GetBytes(export); var aMemoryStream = new MemoryStream(aFileContent); return File(aMemoryStream, "text/plain", string.Format("{0}.csv", CustomerId));
据我所知,你不能。 您不能在此处使用ajax作为文件下载。 YE – 根据jQuery支持数据类型,但不支持文件。 您需要通过链接或jQuery get请求链接到该文件以获取非Ajax请求。
请参阅: 无法在https://api.jquery.com/jQuery.ajax/上打开下载保存对话框和“数据类型”
您的问题的替代解决方案是让AJAX函数返回将下载csv的实际URL(类似于您的C#backendcode)。 然后客户端将使用window.open(url)启动URL
为什么它必须是ajax? 只需构建您的URL并执行window.location.href即可执行您的调用。 所有你似乎传递它的是customerId,所以这应该很容易。
Ajax操作旨在允许用户在幕后操作继续时保持在页面上。 文件下载将使用户保持在页面上并只下载文件,因此在此过程中使用ajax没有任何好处。 也许这样的事情:
上述就是C#学习教程:jQuery使用AJAX调用传递文件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
window.location.href = "/Search/ProductsExport?" + $.param($('CustomerId'))
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1008972.html