|
Отправка формы обратной связи - белый экран
|
|||
---|---|---|---|
#18+
Здравствуйте. Есть сайт(тестовый): На нём висит форма для отправки на email письма (вызывается php-скрипт). Скрипт: <?php $user_name = $_POST['user_name']; $user_email = $_POST['user_email']; $user_phone = $_POST['user_phone']; $theme = $_POST['theme']; $text_message = $_POST['text_message']; $user_name = htmlspecialchars($user_name); $user_email = htmlspecialchars($user_email); $user_phone = htmlspecialchars($user_phone); $theme = htmlspecialchars($theme); $text_message = htmlspecialchars($text_message); $user_name = $user_name . " " . $user_email . " " . $user_phone; mail('somemail@gmail.com',$theme,$text_message,$user_name); ?> 1. Скрипт работает, т.е. письмо полностью успешно доставляется на somemail@gmail.com. Однако, перед пользователем возникает белый экран, убирающийся только стрелочкой назад. 2. Можно ли сделать отправку формы, т.е. вызов скрипта feedback.php асинхронным? 3. И ещё 1 момент: как убрать табличку с предупреждением о повторной отправке формы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2017, 18:58 |
|
Отправка формы обратной связи - белый экран
|
|||
---|---|---|---|
#18+
1. А что должно быть? Ваш код вообще ничего не выводит в браузер. 2. Можно. 3. Распространенным способом избежать повторной отправки формы является редирект, если Вы это имели в виду. Саму же "табличку с предупреждением" выдает веб-браузер. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2017, 19:24 |
|
Отправка формы обратной связи - белый экран
|
|||
---|---|---|---|
#18+
1. Должно быть ничего - то есть скрипт выполняется, но не перебрасывает на другую (белую) страницу, должно оставаться на этой странице. 2. Каким образом? Засунуть весь код формы в скрипт и вызвать его асинхронно? 3. Т.е. нельзя каким-либо образом пометить форму, чтобы браузер не надоедал своими табличками? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2017, 19:56 |
|
Отправка формы обратной связи - белый экран
|
|||
---|---|---|---|
#18+
ukugyul5524651. Должно быть ничего - то есть скрипт выполняется, но не перебрасывает на другую (белую) страницу, должно оставаться на этой странице.С чего вдруг? Сервер ответил и прислал "Content-Type: text/html; charset=UTF-8" (хтмл-страницу) длиной ровно ноль байт. Что и отражено в окне браузера. ukugyul5524652. Каким образом?Как то так ukugyul5524653. Т.е. нельзя каким-либо образом пометить форму, чтобы браузер не надоедал своими табличками?Поясните, чего именно Вы хотите добиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2017, 20:43 |
|
Отправка формы обратной связи - белый экран
|
|||
---|---|---|---|
#18+
ukugyul5524651. Должно быть ничего - то есть скрипт выполняется, но не перебрасывает на другую (белую) страницу, должно оставаться на этой странице. 1. По-умолчанию браузер отправляет POST-запрос на указанный в атрибуте action URL-адрес и пытается открыть эту страницу. Вы можете указать пустой URL (action=""), тогда браузер отправит POST-запрос на текущую страницу с её перезагрузкой (но так лучше не делать, да и w3c-валидатор будет ругаться на пустой атрибут action). Согласно Вашему текущему коду браузер и действует (отправляет POST запрос на feedback.php и открывает эту страницу): Ваш текущий код Код: html 1. 2. 3. 4.
Вы можете в PHP-коде файла feedback.php сделать редирект на любую страницу (как вариант, указанную в скрытом поле). Но имхо это устаревший способ . Когда на Вашем тестовом сайте появятся JavaScript, Вы рано или поздно дойдёте до AJAX. ukugyul5524652. Каким образом? Засунуть весь код формы в скрипт и вызвать его асинхронно? 2. Лучше формировать форму обр.связи (и не только её) через JavaScript и делать AJAX-запрос без всяких перезагрузок и редиректов, оставаясь на текущей странице, не используя без надобности никакие iframe и т.д. Плюс AJAX-запросов в том, что любая Ваша веб-страница может содержать элементы SPA (форму обратной связи как минимум), сохранится полноценная навигация по истории "назад - вперёд", а так-же может прекрасно индексироваться поисковиками (если доверить однотипные операции и служебный HTML-код клиентскому JavaScript). ukugyul5524653. Т.е. нельзя каким-либо образом пометить форму, чтобы браузер не надоедал своими табличками? 3. Если только в настройках браузера, что вряд-ли, да и каждому посетителю это не объяснишь, тем более не заставишь что-то дополнительно настраивать. Браузер выдаёт запрос на подтверждение повторной отправки POST-данных, что является правильным действием. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2017, 02:39 |
|
Отправка формы обратной связи - белый экран
|
|||
---|---|---|---|
#18+
Попытался сделать через AJAX, возникла небольшая проблема: Выплывающие ошибкиNotice: Undefined index: user_name in /storage/h6/657/1008657/public_html/feedback.php on line 2 Notice: Undefined index: user_email in /storage/h6/657/1008657/public_html/feedback.php on line 3 Notice: Undefined index: user_phone in /storage/h6/657/1008657/public_html/feedback.php on line 4 Notice: Undefined index: theme in /storage/h6/657/1008657/public_html/feedback.php on line 5 Notice: Undefined index: text_message in /storage/h6/657/1008657/public_html/feedback.php on line 6 feedback.php без изменений. jq.js загрузил в корень index.php <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>Название статьи</title> <link rel="stylesheet" href="index.css"> <?php include_once "header.php"; ?> <H1 align=center>Название статьи</H1> <meta name="Description" content="Описание данной статьи."> <meta name="Keywords" content="rating, релевантность, relevancy"> Скрип всплывающего меню <script type="text/javascript" src="jq.js"></script> <script type="text/javascript" language="javascript"> function call() { var msg = $('#feedback_form').serialize(); $.ajax({ type: 'POST', url: 'feedback.php', data: msg, success: function(data) { $('#results').html(data); }, error: function(xhr, str){ alert('Возникла ошибка: ' + xhr.responseCode); } }); } </script> </head> <body> <p> <H1 align=center> Заголовок 1 уровня</H1> </p> <p> <H2 align=center> Заголовок 2 уровня</H2> </p> <p> <H3 align=center> Заголовок 3 уровня</H3> </p> <p> Просто текст. Это просто текст и мы сейчас проверяем, как отображается текст в различных устройствах, в частности, с мобильных браузеров. </p> <div id="results">вывод</div> <form method="post" action="javascript:void(null);" onsubmit="call()">> <p><input type="text" name="user_name" pattern="[А-Яа-яЁё]{4,}" placeholder="Ваше Имя" title="Имя должно быть на русском. Пример: Степа, Петя, Вася, Оля"/></p> <p><input type="email" name="user_email" pattern="([A-z0-9_.-]{1,})@([A-z0-9_.-]{1,}).([A-z]{2,8})" placeholder="Ваш E-mail" title="Пример: bloggood@mail.ru" required /></p> <p><input type="text" name="user_phone" pattern="\+([0-9]{1,3})(\([0-9]{2,3}\))-([0-9]{3})-([0-9]{2})-([0-9]{2})" placeholder="Ваш телефон" title="Пример: +7(999)-000-00-00"/></p> <p><input type="text" name="theme" placeholder="Тема заявки" title="Введите тему вашего вопроса/заявки"/></p> <p><textarea name="text_message" rows="6" cols="40" placeholder="Ваш вопрос"></textarea></p> <input type="submit" value="Отправить"/> </form> </body> <?php include_once "footer.php"; ?> </html> Странно, прочитал об этих ошибках - как будто в feedback.php что-то не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2017, 19:58 |
|
|
start [/forum/topic.php?fid=23&msg=39427086&tid=1460700]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 352ms |
total: | 476ms |
0 / 0 |