2013-10-24 2 views
0

Я пытаюсь создать ссылку, которая будет загружать CSV-файл. Моим текущим решением является прослушивание события клика по этой ссылке, а затем прикрепление скрытой формы и отправка этой формы. Я хотел бы установить объект окна равным ссылке на обработчик, который создает CSV. Однако, похоже, это не работает, вот что я до сих пор. Я НЕ ЗАИНТЕРЕСОВАН В ИСПОЛЬЗОВАНИИ ЛЮБЫХ ДОПОЛНИТЕЛЬНЫХ БИБЛИОТЕК.скачать CSV-файл с использованием объекта window

Это код обработчика, который используется для создания манекена 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(); 

I хотел бы сделать следующее:

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

Когда я делаю это, все, что происходит, я получаю пустой экран и нет CSV файл всегда загружается. Было бы неплохо, если бы ссылка также не привела пользователя к странице, содержащей ссылку. Я попытался установить target = "_blank", однако это не сработало.

ответ

0

Я использовал плагин JQuery, чтобы решить эту проблему точно:

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

Вы используете простую ссылку, как вы уже делаете и прикрепить событие щелчка, которое запускает загрузку через плагин.

Умный механизм подробный here.

+0

Я действительно видел это в подобном ответе, но мне не интересно использовать дополнительные библиотеки, если это возможно. –

+0

Достаточно честный. Вы все равно должны его проверить;) –

Смежные вопросы