alexbuki
@alexbuki
программист js

Можно ли перехватить ответ пост запроса из формы?

На странице есть форма:
form method="post" :action="`/api/project/....
В ответ приходит файл и начинается скачивание.
Но иногда данных нет и приходит 404.
Как-то можно перехватить этот ответ и высветить уведомление что данных нет?
Пока делаю через редирект на сервере, но при этом происходит перезагрузка страницы, что не круто.
  • Вопрос задан
  • 401 просмотр
Пригласить эксперта
Ответы на вопрос 4
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Через AJAX отправляйте запрос на проверку POST-данных. Если прийдёт ответ OK, или прямой URL на скачиваемый файл (вам решать по удобству) - вот тогда уже и делайте само скачивание... А в случае ошибки - alert() конечно, и пусть исправляют POST-данные.
Ответ написан
Комментировать
@DarknessSide
Я не уверен, что скажу правильно, но разве нельзя в файле, который указан в action проверить $_POST на пустоту и в зависимости от этого уже запускать скачивание, либо выдавать ошибку?
Ответ написан
Aetae
@Aetae Куратор тега JavaScript
Тлен
Перехватить ничего нельзя.
Можно по onsubmit:
a) скачивать файл ajax'ом, и после этого отдавать при наличии.
b) делать предварительно HEAD запрос, и только если статус не 404 вызывать реальный submit.
Вариант a не подходит для больших файлов, т.к. жрёт память. Вариант b делает лишний запрос.

Правильный вариант - переработать логику сервера и формы.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
function UrlExists(url,alert=false) {
    var http = new XMLHttpRequest();
    http.open('HEAD', url, false);
    http.send();
    if (http.status != 404)
        //  do something
    else {
        if (alert) alert(alert);
        window.location.reload();
     }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы