Использование Jquery и Ajax для сохранения файла в ASP.Net - PullRequest
6 голосов
/ 24 июня 2010

У меня есть кнопка, которая использует 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(){
            }
        });
    });
});

Ответы [ 2 ]

3 голосов
/ 24 июня 2010

Вместо использования AJAX (который не будет работать, как упоминает Брайан), вы можете подделать его с помощью jQuery для динамического создания формы и фрейма для публикации. Вот пример, который я нашел - вы должны прочитать комментарии для некоторых улучшений (например, использование динамически создаваемого iframe для предотвращения проблем, если ваша страница не возвращает правильные заголовки).

1 голос
/ 24 июня 2010

Я думаю, что проблема в AJAX, и если запрос был сделан как стандартный запрос вне JQuery, вы бы получили диалоговое окно сохранения.Запросы JQuery будут передавать данные в обратный вызов ...

...