0

我正在尝试创建一个下载 CSV 文件的链接。我目前的解决方案是监听该链接上的点击事件,然后附加一个隐藏的表单,然后提交该表单。我想将窗口对象设置为与创建 CSV 的处理程序的链接相等。但是它似乎不起作用,这是我到目前为止所拥有的。我对使用任何其他库不感兴趣。

这是用于创建虚拟 CSV 文件的处理程序代码:

else if(action == "exportalldata")
{
    context.Response.Clear();
    context.Response.ContentType = "application/csv";
    context.Response.AddHeader("Content-Disposition", "attachment;     filename=yourData.csv");
    context.Response.Write("\"ID\", \"Description\", \"DTA\"\n");
    context.Response.Write("\"\test1\",\"test2\",\"test3\"\n");   
    context.Response.End();    
}

表单方法,当单击链接时,该事件触发此(有效):

$form = $(document.createElement('form'))
        .attr({
              action: 'svc/export.ashx/exportAllData',
              method: 'POST'
         })
         .css('display', 'none')
         .appendTo('body');
$form.submit();
$form.empty().remove();

我想做以下事情:

<a id = "exportData" href="javascript:window.location='svc/export.ashx/exportAllData'">Export Variable List</a>

当我这样做时,所发生的只是我得到一个空白屏幕,并且没有下载任何 CSV 文件。如果链接也不会引导用户离开包含链接的页面,那就太好了。我尝试设置 target = "_blank" 但这不起作用。

4

1 回答 1

0

我使用了一个 jQuery 插件来解决这个问题:

http://johnculviner.com/category/jquery-file-download/

您使用一个简单的链接,就像您已经在做的那样,并附加一个通过插件触发下载的点击事件。

这里详细介绍了巧妙的机制。

于 2013-10-24T20:27:37.890 回答