У меня есть контактная форма, которая работает нормально, но моя проблема в том, что она переходит на другую страницу, если вы нажимаете «Отправить» и повторяете «Электронное письмо отправлено!».
Как я могу предотвратить такое перенаправление? Я хочу, чтобы он просто появлялся под кнопкой, иначе кнопка исчезнет и будет заменена на "Электронное письмо отправлено!" или «Ошибка!»?
Вот мой HTML:
<div style = "padding-top: 75px; padding-left: 0;" class = "col-md-6 col-sm-6 col-xs-12 contact-padding hidden-xs hidden-sm" id = "form_container">
<div class = "row">
<div class = "col-centered1 col-md-8">
<h2 style = "font-family: 'yrthree_boldregular', sans-serif;" class = "divider-header3">Hit us up</h2>
</div>
</div>
<form role = "form" method = "post" id = "contact-form" action = "mail.php" name = "contact-form">
<div class = "row">
<div class = "col-centered1 col-md-8 form-group">
<input type = "text" id = "name" name = "name" class = "form-control" placeholder = "NAME" required>
</div>
</div>
<div class = "row">
<div class = "col-centered1 col-md-8 form-group">
<input type = "text" id = "email" name = "email" class = "form-control" placeholder = "EMAIL" required>
</div>
</div>
<div class = "row">
<div class = "col-centered1 col-md-8 form-group">
<textarea style = "resize: none; border: 0; color: #07002c;" class = "form-control" type = "text" name = "message" id = "message" placeholder = "MESSAGE" maxlength = "6000" rows = "7"></textarea>
</div>
</div>
<div class = "row">
<div class = "col-centered1 col-md-8 form-group">
<a class = "btn btn-primary pull-left send-button1" onclick = "document.getElementById('contact-form').submit();">
<img draggable = "false" src = "/images/send-button1.jpg" alt = "" onmouseover = "this.src='/images/send-button2.jpg';" onmouseout = "this.src='/images/send-button1.jpg';">
</a>
</div>
</div>
</form>
</div>
Вот мой PHP-код:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$content = "From: $name \n Email: $email \n Message: $message";
$recipient = "[email protected]";
$mailheader = "From: $email \r\n";
mail($recipient, $content, $mailheader) or die("Error!");
echo "Email sent!";
?>
Спасибо! :)
Затем либо поместите код и HTML в тот же файл, и когда вы перекрасите страницу, сделайте это с желаемым результатом. Или вам придется изучить AJAX
Используя AJAX, вы можете выполнять операции PHP без перезагрузки страницы или перенаправления.
действие формы должно быть пустым, например и добавить php-код должен быть на той же странице, а файлы ext. должен быть .php
Вы можете использовать ajax для отправки без перенаправления на другую страницу. Я прочитал этот ответ на это. Вы можете написать свой код примерно так:
<script type = "text/javascript">
function sendEnquiryform(){
var name=$('#name').val();
var email=$('#email').val();
var message=$('#message').val();
$.post("send_mail.php",'name='+name+'&email='+email'&message='+message,function(result,status,xhr) {
if ( status.toLowerCase()= = "error".toLowerCase() )
{ alert("An Error Occurred.."); }
else {
//alert(result);
$('#sucessMessage').html(result);
}
})
.fail(function(){ alert("something went wrong. Please try again") });
}
HTML:
<form method = "post" name = "FrmEnquiry" id = "FrmEnquiry" action = "" onsubmit = "sendEnquiryform();">
<input name = "name" id = "name" required = "required" placeholder = "Your Name">
<input name = "email" id = "email" type = "email" required = "required" placeholder = "Your Email">
<div class = "clearfix"> </div>
<textarea name = "message" id = "message" cols = "20" rows = "5" required = "required" placeholder = "Message"></textarea>
<div class = "submit">
<input id = "submit" name = "submit" type = "submit" value = "Submit">
</div>
</form>
<span id = "sucessMessage"> </span>
отправить mail.php
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: agriindiaexp.com';
$to = '[email protected]';
$subject = 'Email Inquiry';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
if ($_POST['submit']) {
if (mail ($to, $subject, $body, $from)) {
$success = "Message successfully sent";
} else {
$success = "Message Sending Failed, try again";
}
}
?>
Это сработало для меня. Спасибо автор за ответ.
Код отсюда: stackoverflow.com/questions/40968647/…
Вы можете использовать Ajax.stackoverflow.com/questions/16616250/… в этом посте, моя помощь.