使用window对象下载CSV文件

时间:2013-10-24 20:18:46

标签: javascript jquery asp.net csv

我正在尝试创建一个可下载CSV文件的链接。我目前的解决方案是在该链接上侦听点击事件,然后附加隐藏的表单,并提交该表单。我想将window对象设置为与创建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”然而这不起作用。

1 个答案:

答案 0 :(得分:0)

我使用jQuery插件来解决这个确切的问题:

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

您使用类似于您已经在做的简单链接并附加通过插件触发下载的点击事件。

聪明机制详细here