jQuery доставка файла с вызовом AJAX - PullRequest
2 голосов
/ 04 июня 2011

Если у меня есть вызов AJAX, который возвращает, скажем, CSV, как мне заставить браузер запрашивать загрузку у пользователя?Ниже ProductsExport вернет CSV в данных об успехе.Мне просто нужно то, что я бы заменил // Доставить файл в строку пользователя с ...

$.ajax({
    type: "POST",
    url: "/Search/ProductsExport",
    data: $('#CustomerId').serialize(),
    success: function (data) {

        // Deliver file to user!!

    },
    error: function (xhr, textstatus, errorThrown) {
        alert('Error');
    }
})

Мой код C # на внутреннем конце выглядит так:

Ответы [ 3 ]

3 голосов
/ 04 июня 2011

Вы не можете, насколько я знаю.Вы не можете использовать AJAX здесь для загрузки файла.Да - это тип данных поддержки в соответствии с jQuery, но не для файла.Вам необходимо создать ссылку на файл для запроса без AJAX либо по ссылке, либо через запрос на получение jQuery.

См .: Невозможно открыть диалог сохранения загрузки и "тип данных" на http://api.jquery.com/jQuery.ajax/

0 голосов
/ 15 ноября 2013

Почему это должен быть AJAX?Просто создайте свой URL и сделайте window.location.href, чтобы выполнить ваш вызов.Похоже, все, что вы передаете, - это идентификатор клиента, поэтому это должно быть довольно просто.

Операции Ajax предназначены для того, чтобы позволить пользователю оставаться на странице, пока операции продолжаются за кулисами.Загрузка файла будет держать пользователя на странице и просто загружать файл, так что нет никакой пользы от использования ajax в этой ситуации.Возможно, что-то вроде этого:

window.location.href = "/Search/ProductsExport?" + $.param($('CustomerId'))
0 голосов
/ 04 июня 2011

Альтернативное решение вашей проблемы состоит в том, чтобы функция AJAX возвращала фактический URL, который будет загружать CSV (аналогично вашему C # бэкэнд-коду).Затем клиентская сторона запустит URL, используя window.open (url)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...