2010-09-13 2 views
0

Я использую $ajax({ type:"post", url:"/whatever/" }) для доступа к моему серверу, который работает красиво. Проблема в том, что ответ не оценивается по мере необходимости. На некоторых occations сервер отправляет обратно фиктивную строку («X»), который может быть проигнорирован в браузере, но и в других случаях мой сервер отправляет обратно специальный файл как вложение:Функция jquery ajax и загрузка файлов

mimetype application/x-my-special-type 
Content-Disposition attachment; filename=myname.ext 
.... 

Но браузер (I меня интересует только Google Chrome/Chromium - это интрасети) не показывает всплывающее окно загрузки. (Вызов URL «/ whatever /» непосредственно в адресной строке фактически показывает всплывающее окно загрузки для сохранения файла.)

Как я могу убедить jQuery показать обычное всплывающее окно загрузки?

ответ

2

Отправьте пользователя по URL-адресу, установив window.location.href или напрямую связавшись с файлом. Не используйте AJAX для этого, поскольку он используется только для извлечения данных в переменные/вставки в DOM. Вероятно, вам придется подумать о другом способе представления случая отсутствия ответа. Возможно, часть AJAX может использоваться, чтобы установить, доступен ли файл или нет, и перенаправление произойдет, если ответ AJAX указывает, что файл доступен.

+0

Я боялся это прочитать. Кажется, я должен отправить запрос ajax, проверить ответ с сервера, и если он содержит что-то вроде «download_waiting», тогда сделайте window.location.href, чтобы на самом деле выполнить загрузку :( – mawimawi

+0

Действительно. Обновлен мой ответ, чтобы сказать точно, что как вы ввели свой комментарий. – spender

+0

Отсутствие ответа, вероятно, может быть обработано страницей 404 или аналогичной странице типа «Запрошенный файл не найден». –

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