Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2022, 10:50
Аватар для sovsem-nub
Профессор
Отправить личное сообщение для sovsem-nub Посмотреть профиль Найти все сообщения от sovsem-nub
 
Регистрация: 15.10.2014
Сообщений: 255

Как по простому обработать ошибку при отправке формы и вывести ее в 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, чтобы человек понял, что форма не ушла? И желательно по какой причине.

Последний раз редактировалось sovsem-nub, 14.12.2022 в 10:58.
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2022, 12:50
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Как вариант отправлять данные формы самому, тем же fetch(). Тогда можно будет анализировать "успех или не успех"...
https://openjavascript.info/2022/04/...pts-fetch-api/

Последний раз редактировалось ksa, 14.12.2022 в 12:54.
Ответить с цитированием
  #3 (permalink)  
Старый 14.12.2022, 13:17
Аватар для sovsem-nub
Профессор
Отправить личное сообщение для sovsem-nub Посмотреть профиль Найти все сообщения от sovsem-nub
 
Регистрация: 15.10.2014
Сообщений: 255

как-то не получается отправить форму через 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
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2022, 14:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от sovsem-nub
blocked by CORS policy
Это защита от кросдоменных запросов...
https://habr.com/ru/company/macloud/blog/553826/
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2022, 15:21
Аватар для sovsem-nub
Профессор
Отправить личное сообщение для sovsem-nub Посмотреть профиль Найти все сообщения от sovsem-nub
 
Регистрация: 15.10.2014
Сообщений: 255

Да, это яндекс выдает и тоже не работает. По крайней мере с моими "ровными " руками.
Ответить с цитированием
  #6 (permalink)  
Старый 15.12.2022, 10:51
Аватар для sovsem-nub
Профессор
Отправить личное сообщение для sovsem-nub Посмотреть профиль Найти все сообщения от sovsem-nub
 
Регистрация: 15.10.2014
Сообщений: 255

я сдался. Везде пишут, что сервер не может отличить запрос из формы и запрос из XMLHttpRequest , но почему тогда формой я отлично все отправляю, а то же самое и туда же через XMLHttpRequest получаю в ответ CORS? это гугл какие-то хитрые ограничения ставит? или моих знаний не хватает, чтобы нормальный код написать?
Ответить с цитированием
  #7 (permalink)  
Старый 15.12.2022, 11:23
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Разница может быть в заголовках запроса...
В статейке, ссылку я давал выше, про это рассказывают.
Ответить с цитированием
  #8 (permalink)  
Старый 15.12.2022, 12:02
Аватар для sovsem-nub
Профессор
Отправить личное сообщение для sovsem-nub Посмотреть профиль Найти все сообщения от sovsem-nub
 
Регистрация: 15.10.2014
Сообщений: 255

перепробовал все заголовки из этой статейки. Там кстати ошибок много, часть символов в коде пропущено (плохой копипаст) и в комментариях написано, что уязвимость, благодаря которой можно обойти CORS есть не везде. Какие заголовки отправляет простая форма?
Ответить с цитированием
  #9 (permalink)  
Старый 15.12.2022, 15:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

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
Ответить с цитированием
  #10 (permalink)  
Старый 15.12.2022, 15:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от sovsem-nub
Какие заголовки отправляет простая форма?
Цитата:
Простые заголовки – разрешены только:
Accept,
Accept-Language,
Content-Language,
Content-Type со значением application/x-www-form-urlencoded, multipart/form-data или text/plain.
https://learn.javascript.ru/fetch-cr...rostye-zaprosy
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно при клике на нужную ссылку вывести confirm ? saturn Элементы интерфейса 7 19.09.2011 09:43
Скрыть iframe - транспорт при отправке формы. Kotakota AJAX и COMET 2 30.08.2011 10:43
Как выполнить код javascript при инклюде странички на php wfire jQuery 7 27.05.2011 14:43
Как сделать так, чтобы при сабмите формы напечатанный текст не исчезал? Athlet Общие вопросы Javascript 1 18.07.2010 02:44
Как выдавать ошибку при сбросе загрузки страницы? AvaGet Общие вопросы Javascript 2 11.12.2008 19:04