我有这个愚蠢的问题,我在响应标题中看到我的csv数据,但它没有下载csv。 在客户端,我有一个按钮,然后单击ajax post请求就像
一样$.ajax({
url: 'xyz/GenerateCSV',
type: 'POST',
data: postData,
contentType: "application/json; charset=utf-8"
});
在服务器端,我将响应设置为
Response.AddHeader("content-disposition", "attachment;filename=ListExport.csv");
Response.ContentType = "text/csv";
http响应标题正好 -
Cache-Control:private
content-disposition:attachment;filename=EncounterListExport.csv
Content-Encoding:gzip
Content-Type:text/csv; charset=utf-8
Date:Mon, 22 Sep 2014 14:18:05 GMT
Server:Microsoft-IIS/8.0
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:4.0
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?
知道发生了什么事吗?我没有使用任何表格或“提交”按钮。
谢谢, Vaibhav的
答案 0 :(得分:1)
关于您的评论:
在没有任何反应的意义上失败了。
那是不正确的。由您自己承认,"响应内容包含数据。"因此某事确实发生了。响应将数据发送给客户端。
问题是,你用这些数据做什么?根据你的代码,没有:
$.ajax({
url: 'xyz/GenerateCSV',
type: 'POST',
data: postData,
contentType: "application/json; charset=utf-8"
});
the documentation查看$.ajax()
。您需要为其提供一些代码,以便在收到响应后调用。该代码将以某种方式处理响应。像这样:
$.ajax({
url: 'xyz/GenerateCSV',
type: 'POST',
data: postData,
contentType: "application/json; charset=utf-8"
}).done(function (response) {
// use the data from the response
}).fail(function (response) {
// handle an error from the response
});
您使用该数据做什么取决于您。它的结构化CSV数据,我想存在一些可以轻松解析的JavaScript库。如果要将数据保存到文件中,则必须以某种方式(which could involve some trickery and workarounds)提示用户或将其保存到本地存储。 JavaScript无法直接写入文件系统(出于明显的安全原因)。