Как по простому обработать ошибку при отправке формы и вывести ее в alert?
Есть такая форма для сайта от гугл форм
<iframe name="my_iframe" style="display:none;"></iframe> <form action="https://docs.google.com/forms/d/16i928dXsTVbTo1TYxm0Ehd8BYrYyNc4jxfef6tak04Y/formResponse" method="POST" target="my_iframe" ><input name="entry.380347480" aria-label="order_number" ></input><input name="entry.1423219090" aria-label="name" ></input><input name="entry.774720101" aria-label="email" ></input><input name="entry.1229029910" aria-label="telephone" ></input><input name="entry.1932354453" aria-label="delivery_adress" ></input><input name="entry.1783446383" aria-label="link_for_your_order" ></input><textarea name="entry.839799310" aria-label="client_comments" ></textarea><textarea name="entry.766941228" aria-label="manager_comments" ></textarea> <input type="submit" name="rsubmit" value="Готово"></form> Она нормально работает (хотя зачем-то инпутами закрыта). Но даже если нет интернета, она все равно браво рапортует, что все ок и она отправлена и только в консоли видна красная ошибка. Как можно вывести эту ошибку в alert, чтобы человек понял, что форма не ушла? И желательно по какой причине. |
Как вариант отправлять данные формы самому, тем же fetch(). Тогда можно будет анализировать "успех или не успех"...
https://openjavascript.info/2022/04/...pts-fetch-api/ |
как-то не получается отправить форму через fetch
в консоли появляется другая красная ошибка и до отправки формы вообще дело не доходит и белой ошибки в консоли нет. Access to fetch at 'https://docs.google.com/forms/d/16i928dXsTVbTo1TYxm0Ehd8BYrYyNc4jxfef6tak04Y/formResponse' from origin 'https://null.jsbin.com' has been blocked by CORS policy |
Цитата:
https://habr.com/ru/company/macloud/blog/553826/ |
Да, это яндекс выдает и тоже не работает. По крайней мере с моими "ровными " руками.
|
я сдался. Везде пишут, что сервер не может отличить запрос из формы и запрос из XMLHttpRequest , но почему тогда формой я отлично все отправляю, а то же самое и туда же через XMLHttpRequest получаю в ответ CORS? это гугл какие-то хитрые ограничения ставит? или моих знаний не хватает, чтобы нормальный код написать?
|
Разница может быть в заголовках запроса...
В статейке, ссылку я давал выше, про это рассказывают. |
перепробовал все заголовки из этой статейки. Там кстати ошибок много, часть символов в коде пропущено (плохой копипаст) и в комментариях написано, что уязвимость, благодаря которой можно обойти CORS есть не везде. Какие заголовки отправляет простая форма?
|
sovsem-nub, вот вариант отправки "как форма"...
<form id="formElem"> <input type="text" name="name" value="John"> <input type="text" name="surname" value="Smith"> <input type="submit"> </form> <script> formElem.onsubmit = async (e) => { e.preventDefault(); let response = await fetch('/article/formdata/post/user', { method: 'POST', body: new FormData(formElem) }); let result = await response.json(); alert(result.message); }; </script> https://learn.javascript.ru/formdata |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 19:22. |