Задать вопрос
@Ashamil
Начинающий

Как отдать файл на скачивание запросом AJAX в Wordpress?

Привет!
Пытаюсь перепилить плагин для Wordpress. Помогите, кто чем может, пожалуйста :)
Берутся данные JavaScript-ом из бэкенда и отдаются в PHP, который создаёт на сервере файл. Задача отдать его пользователю в браузер. Старый скрипт отдавал его без проблем download.php:
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename='$name;');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($name));
if (ob_get_contents()) ob_end_clean();
flush();
readfile($name);


Но wordpress попросил запретить прямой доступ, ок :
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly


Соответственно вызов AJAX повешенный на success стал открывать пустое окно:

$.ajax  (
				{

				type: "POST",

					url: myAyax.ajax_urls.write_url ,//Здесь вызывается подключенная через хук на admin-ajax.php функция

				data: {
					ids:arr, // Это данные
					
					action: 'write_file_server', //Передаем хук. который пишет файл с данными на сервер.
							
				        },
			success: function(result){
					
					window.location = myAyax.ajax_urls.download_url //Здесь был линк на прямой вызов download.php (см. выше)
					})
				
				}
				
			});

Пытался вызвать, в функции вызываемой через хук:include('download.php');
Вызывается, отдает в буфер содержимое и код 200, но не качается ;)
Линк в succes-е на файл открывает его содержимое, и тоже не качается, естественно :)
Можно ли на succses как-то повесить вызов download.php, не GET-ом?
Помогите идей, пожалуйста.
UPD: Спасибо откликнувшимся, разобрался сам :)
Повесил ещё один хук на непустой GET запрос, и прописал его в success :
window.location = window.location.href+'&filename=filer.file';
  • Вопрос задан
  • 1365 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
@Ashamil Автор вопроса
Начинающий
Это да :) Он и alert(result); выводится, как скачать в виде файла? %) ссылка вида download.php?file=file.file тоже не работает.
Зато
window.location = window.location.href+'&filename=filer.file';
сработала:)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@tommy_13
вообще-то ответ в result лежит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы