Перенаправление после отправки формы
Как сделать так, чтобы эта форма перенаправляла пользователя на внешний сайт, например, http://amaze.bg/, после того, как пользователь отправил форму с помощью кнопки "Зарегистрироваться" и после того, как форма отправила электронное письмо на адрес antoniya.p@amaze.bg с введенными пользователем данными?
Вот код PHP (contact_process.php):
<?php
usleep(500000);
$to = "antoniya.p@amaze.bg";
$author = "";
$email = "";
$comment = "";
$class = "FORM CONTACT ";
if (isset($_POST['input_name']))
$author = $_POST['input_name'];
if (isset($_POST['input_email']))
$email = $_POST['input_email'];
if (isset($_POST['input_class']))
$class = $_POST['input_class'];
if (isset($_POST['input_message']))
$comment = $_POST['input_message'];
$sub="Alumni registration recieved - ".$date1;
$name=$authorlast."< ".$email." >";
$msg = '';
if (@mail($to,$sub,$body,"Content-Type: text/html; charset=iso-8859-1"))
{
$msg = 'Your registration was sent successfully';
//echo '<div class="alert success pngfix">'. $msg .'</div>';
}
else{
$msg = 'Email failed to be sent (mail function not work)';
//echo '<div class="alert error pngfix">'. $msg .'</div>';
}
echo $msg;
?>
И вот часть.js:
jQuery.validator.addMethod(
"math",
function(value, element, params) {
if (value==='')
return false;
return this.optional(element) || value == params[0] + params[1];
},
jQuery.format("Please enter the correct value for {0} + {1}")
);
$('.form-register').validate({
rules: {
input_name: {
minlength: 3,
required: true
},
input_email: {
required: true,
email: true
},
input_message: {
minlength: 0,
required: false
}
,
submitHandler: function(form) {
var a=$('.form-register').serialize();
$.ajax({
type: "POST",
url: "contact_process.php",
data:a,
complete:function(){
},
beforeSend: function() {
},
success: function(data){
if (data=='success') {
$('.form-register').find("input[type=text], textarea").val("");
alert('You have successfully registered. Thank you for being active alumni!');
} else {
alert(data);
}
},
error : function() {
}
});
return false;
}
});
});
Спасибо вам за помощь.
2 ответа
После некоторых экспериментов и помощи от Чарли мне удалось найти, где и что именно добавить в код, чтобы форма отправляла информацию на сервер и перенаправляла пользователя на другой сайт. Изменения должны быть внесены в файл.js с добавлением следующей строки:
location = "http://amaze.bg/"
Но он должен быть добавлен в "else" в файле.js, чтобы "alert" был в "success", чтобы все работало правильно:
success: function(data){
if (data=='success') {
alert(data);
} else {
location = "http://amaze.bg/"
}
},
error : function() {
}
В обратном вызове вашего успеха добавьте location = " http://amaze.bg/"
success: function(data) {
// if you echo "success" in your php script when the mail is sent
if (data === 'success') {
$('.form-register').find("input[type=text], textarea").val("");
alert('You have successfully registered. Thank you for being active alumni!');
// Now redirect
location = "http://amaze.bg"
} else {
// if you echo "Some Error Message" from your php script
alert(data);
}
},
В конечном счете, вы должны отправлять правильные заголовки из php, чтобы хук успеха в вашем $.ajax срабатывал на коде состояния 200, а хук ошибки срабатывал в вашем $.ajax при обнаружении кода состояния 400–500. Пожалуйста, посмотрите на коды состояния HTTP и отправку правильных заголовков в PHP