У меня есть кнопка, которая использует 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 (который не будет работать, как упоминает Брайан) вы можете подделать его, используя jQuery для динамического создания формы и iframe для публикации. Вот пример, который я нашел - вы должны прочитать комментарии, чтобы узнать о некоторых улучшениях (например, об использовании динамически создаваемого iframe для предотвращения проблем, если ваша страница не возвращает правильные заголовки).
Я думаю, что проблема в AJAX, и если бы запрос был сделан как стандартный запрос вне JQuery, вы бы получили диалоговое окно сохранения. Запросы JQuery будут передавать данные в обратный вызов ...