使用Jquery和Ajax在ASP.Net中保存文件

我有一个按钮,使用jQuery和ajax调用服务器端脚本来创建一个文本文件,并发回以下响应:

Response.ContentType = "csv"; Response.AddHeader("Content-disposition", "attachment; filename=" + fName); Response.ContentType = "application/octet-stream"; Response.BinaryWrite(btFile); Response.End(); 

但是,不会出现保存对话框。 如果我不使用ajax并使用相同的代码执行完整的回发,它可以工作。 有任何想法吗?

这是jQuery代码:

 $(function() { $('#reportButton').click(function() { $.ajax({ type: "POST", url: "GenerateReport.aspx", data: "id=0", success: function(){ } }); }); }); 

而不是使用AJAX(这不会像Brian提到的那样工作),你可以通过使用jQuery动态创建一个表单和iframe来发布它来伪造它。 这是我发现的一个示例 – 您应该阅读注释以获得一些改进(例如,如果您的页面没有返回正确的标题,则使用动态创建的iframe来防止出现问题)。

我认为问题是AJAX,如果请求是作为JQuery之外的标准请求发出的,那么您将获得保存对话框。 JQuery请求会将数据流式传输到回调…