Первый вопрос здесь, так что проявите ко мне терпение.
Я занимаюсь разработкой веб-сайта для своей компании. У меня есть HTML-форма, в которой используется файл php, чтобы отправить мне по электронной почте данные, введенные пользователем. Но пользователь попадает на уродливую страницу .php с простым сообщением «Спасибо».
Мой вопрос состоит из нескольких частей.
1) Вам нужно что-то уведомить пользователя, но это не обязательно должна быть новая страница. 2) Google. Вы можете отправить форму на существующую страницу. 3) Google. Вы должны написать это и отобразить при отправке.






Обычно это зависит от ваших предпочтений.
Что касается меня, я обычно включаю свой сценарий проверки на страницу действия (временно перенаправляет на пустую страницу). Я сохраняю свои переменные сообщения в своем сеансе, чтобы позже можно было перезагрузить форму. Если возникает ошибка, я сохраняю сообщение об ошибке в переменной сеанса, а затем перенаправляю на свою страницу формы. В своей форме я включаю в каждый элемент ввода этот фрагмент
value=<?php if isset($_SESSION['var_name']){echo $_SESSION['var_name'];}?>
Однако, если данные действительны, я выполню определенные действия (вставки в базу данных, рассылку по почте и т. д.) Перед перенаправлением на мою целевую страницу (обычно домашнюю страницу).
Как правильно ответить на 3 ваших вопроса:
Как я уже сказал, это предпочтительно. Он может варьироваться от простого всплывающего окна до перенаправления до полноценной страницы. Тем не менее, стандартным является информирование пользователя о статусе отправки. Он не будет гадать на вашей странице.
Если вы хотите остаться на странице формы, попробуйте отправить форму через AJAX в сценарий проверки. Красиво и просто
Обратитесь к # 2. Вы выполняете свой код во фрагменте AJAX
Ответ: Хорошо, если вы покажете Спасибо !!! сообщение на той же странице, если на странице также есть другой контент.
Ответ: Вы можете использовать AJAX для отправки асинхронного запроса на сервер с данными, заполненными в форме.
3. Далее, если я остаюсь на странице, как мне отобразить поверх нее сообщение вроде «Спасибо, ваша форма была отправлена»?
Ответ: Получив успешный ответ от AJAX, вы можете изменить HTML-код с помощью сообщения «Спасибо», а если вы получите некоторую ошибку при отправке формы, вы можете показать эту ошибку на той же странице, не обновляя страницу.
Учитывая вопрос 1 Является ли стандартным иметь страницу «Успешная отправка», которая выглядит красиво и модно, или можно просто оставаться на странице, на которой находится форма?
Не обязательно иметь отдельную страницу для отображения ответа конечному пользователю. На самом деле это зависит от сценария, для которого вы разрабатываете страницу. Основная цель - предоставить конечным пользователям / посетителям вашего сайта лучший пользовательский интерфейс. Если есть важная информация с большим содержанием, то после отправки формы лучше показать ее на другой странице. Если это просто сообщение об успехе, то после отправки формы можно остаться на той же странице и показать там ответное сообщение.
Теперь перейдем к вопросам 2 и 3.
Если все в порядке, как мне выполнить php-код для отправки данных, не покидая страницы?
Кроме того, если я останусь на странице, как мне отобразить поверх нее сообщение вроде «Спасибо, ваша форма была отправлена»?
Вы можете сделать это с помощью ajax. С помощью jquery вы можете сделать это намного проще, используя
Функция $ .ajax
Бывший :
$("#formbutton").click(function(){
$.ajax({
type: "POST", // method
url: "savecontact.php", // call to external php file
data: {name:n,contact:c}, // passing variables to php file
success: function(result) {
// get the response after ajax call is successful
},
complete: function(result){
}
});
});
Теперь в savecontact.php вы пишете необходимый код (обычный php-код для вставки в таблицу) для сохранения данных и возврата ответа.
Бывший:
result = mysqli_query("INSERT INTO table (NAME ) VALUES ('val')"));
if ($result)
{
echo "Success";
exit;
}
else
{
echo "Error";
exit;
}
После выполнения вызова ajax внутри функции успеха вызова ajax вы получите ответ Success или Error, и на основе этого вы можете отобразить сообщение в пустом div, который обычно помещается над формой.
success: function (response) {
if (response == "Success"){
$("#div").html("Thanks, your form was submitted");
}
else{
$("#div").html("Issue with form submission.Please try again");
}
}
Соответствующее сообщение будет отображаться после отправки формы в виде ответа ajax.
Вы можете установить действие для другой страницы .php, например sendEmail.php
action = "sendEmail.php" method = "post"
и вы можете получить там значение отправки формы. когда электронное письмо отправлено, вы можете поставить такое условие
if (emailSent == true) { заголовок ('Расположение: http://www.example.com/index.php?success=true'); }
при перенаправлении sendEmail.php на страницу индекса вы можете получить значение URL-адреса с помощью php. И отобразить сообщение об успехе
$ paraVal = $ _GET ["успех"]; if ($ paraVal == true) { // выводим сообщение }
Привет! Для меня это имеет наибольший смысл. Единственная проблема в том, что я получаю это сообщение об ошибке. «Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (...)». Я пробовал поискать в Google, но он сказал, что я не могу выполнить какой-либо код перед редактированием заголовка. Я неправильно понял ваши инструкции?
Привет спасибо. Добавьте это перед началом заголовка. ob_start (); и ob_end_clean (); вы можете получить более подробную информацию по этой ссылке: benohead.com/php-modify-header-information-headers-already-s ent
Стандартно сообщать вашим пользователям, что действие было успешным, иначе как они узнают, что оно было выполнено? Что касается других вопросов, вы можете следовать руководствам, таким как это или чему-либо в Интернете, который появляется, когда вы используете Google: «отправить форму с использованием ajax jquery php без обновления страницы»