Скачивание файла после удачной отправки формы

Здравствуйте!

Прошу помощи в написании скрипта для автоматического скачивания файла после удачной отправки формы.
Использую ajaxform + bootstrap.
Мне нужно чтобы после отправки удачной отправки формы с id exampleModalCatalog форма закрылась:
$(document).on('af_complete', function(event, response) {
    if (response.success) {
        $('#exampleModalCatalog').modal('hide');
    }
});
и через пару секунд началось скачивание файла PDF

По собственному умению и подглядев на просторах интернета набросал скрипт:
$(document).on('af_complete', function(event, response) {
    if (response.success) {
        $('#exampleModalCatalog').modal('hide');
        setTimeout(() => {
        window.location = '.../doc/файл.pdf', '_blank';
        }, 1000);
    }
});
Который автоматически закрывает форму exampleModalCatalog после успешной отправки и переходит к открытию файла.
Но, как я сам вижу, скачивание файла с данным скриптом будет происходить у любой формы, а мне нужно только у exampleModalCatalog.
И ещё не могу заставить открываться файл в отдельной вкладке.

Подскажите, как будет выглядеть мой скрипт отправки формы и скачивания файла?
Илья
10 февраля 2020, 13:43
modx.pro
1 232
0

Комментарии: 4

Тодор
10 февраля 2020, 15:42
+1
<script>
    $(document).on('af_complete', function(event, response) {
        var form = response.form;
        if (response.success) {
            if (form.attr('id') == 'exampleModalCatalog' ) {
	        $('#exampleModalCatalog').modal('hide');
		$( "<a></a>", {
		    "id": "created_link",
                    "text": "Download",
		    "download": 1,
		    "css":{"display":"none"},
		    "href": '.../doc/файл.pdf'
		}).appendTo( "body" );
                
                setTimeout(() => {
		    $('#created_link')[0].click();			
		}, 1000);			
            }
        }
    });
</script>
    Илья
    10 февраля 2020, 16:22
    0
    Спасибо!
    Подскажите, как в этом способе принудительно присвоить скачиваемому файлу расширение .pdf и нужное имя.
    Дело в том, что в итоге скачивается файл с именем «1» и без расширения, причём в некоторых браузерах расширение есть, и скачивается файл 1.pdf
      Тодор
      10 февраля 2020, 17:19
      +1
      <script>
      ...
      "download": "file_name.pdf",
      ...
      </script>
    Илья
    10 февраля 2020, 15:43
    0
    Сделал пока так:
    $(document).on('af_complete', function(event, response) {
    // закрываем модальное окно после успешной отправки
        if (response.success) {
            $('#exampleModalCatalog').modal('hide');
        }
    // открываем файл в отдельной вкладке после успешной отправки формы
        if (response.success) {
            $('#exampleModalCatalog');
            window.open('../файл.pdf', '_blank');
        }
    });
    Но мне кажется, это не очень правильный вариант.
    Буду искать как начать загрузку файла, а не открытие его в новой вкладке
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4