Intereting Posts

Проблемы с перенаправлением на контактную форму

Я не могу понять, почему это не перенаправляется, когда все выглядит на месте.

Я использовал Location / path, но не перемещаюсь с главной страницы.

Отправки электронной почты и форма в порядке, но не могут перейти к переадресации на страницу благодарности или ошибки.

Вот мой код JS / PHP / HTML ниже

Спасибо заранее и надеюсь, что вы можете что-то заметить

JS:

/* ================================== Hero Form Validation =====================================*/ $('#hero-submit').click(function(e) { // Stop form submission & check the validation e.preventDefault(); // Variable declaration var error = false; var fname = $('#hero-fname').val(); var email = $('#hero-email').val(); var username = $('#hero-username').val(); // Form field validation if (fname.length == 0) { var error = true; $('#hero-fname').parent('div').addClass('field-error'); } else { $('#hero-fname').parent('div').removeClass('field-error'); } if (email.length == 0 || email.indexOf('@') == '-1') { var error = true; $('#hero-email').parent('div').addClass('field-error'); } else { $('#hero-email').parent('div').removeClass('field-error'); } if (username.length == 0) { var error = true; $('#hero-username').parent('div').addClass('field-error'); } else { $('#hero-username').parent('div').removeClass('field-error'); } if (error == true) { $('#hero-error-notification').addClass('show-up'); } else { $('#hero-error-notification').removeClass('show-up'); } if (error == false) { $.post("hero-form.php", $("#register-form").serialize(), function(result) { if (result == 'sent') { $('#hero-success-notification').addClass('show-up'); $('#hero-submit').addClass('disabled'); } }); } }); // Function to close the Notification $('a.notification-close').click(function() { $(this).parent('div').fadeOut(200); }); 

PHP:

 <?php $subject='Register New Account on Urip Landing Page'; // Subject of your email $to='adam@test.com'; //Recipient's or Your E-mail $headers='MIME-Version: 1.0' . "\r\n"; $headers .="From: " . $_POST['heroEmail'] . "\r\n"; // Sender's E-mail $headers .='Content-type: text/html; charset=iso-8859-1' . "\r\n"; $message .='ACCOUNT DETAILS: ' . "<br>"; $message .='Username: ' . $_POST['heroUsername'] . "<br>"; $message .='First Name: ' . $_POST['heroFname'] . "<br>"; $message .='Last Name: ' . $_POST['heroLname'] . "<br>"; $message .='Email Address: ' . $_POST['heroEmail'] . "<br>"; $message .='Phone Number: ' . $_POST['heroPhone']; if (mail($to, $subject, $message, $headers)) { header('location: /page2.html'); } else { header('location: /page3.html'); } ?> 

HTML

 <form class="register-form margin-top-32 margin-bot-5" id="register-form" method="post"> <div class="row"> <div class="col-lg-6 col-md-6"> <div class="required-field"> <input name="heroFname" id="hero-fname" class="hero-input" type="text" placeholder="First Name"> </div> <!--/ .required-field --> </div> <div class="col-lg-6 col-md-6"> <input name="heroLname" id="hero-lname" class="hero-input" type="text" placeholder="Last Name"> </div> <div class="col-lg-12 col-md-12"> <div class="required-field"> <input name="heroUsername" id="hero-username" class="hero-input" type="text" placeholder="Choose Username"> </div> <!--/ .required-field --> </div> <div class="col-lg-12 col-md-12"> <div class="required-field"> <input name="heroEmail" id="hero-email" class="hero-input" type="text" placeholder="Email Address"> </div> <!--/ .required-field --> </div> <div class="col-lg-8 col-md-8"> <input name="heroPhone" id="hero-phone" class="hero-input" type="text" placeholder="Phone Number"> </div> <div class="col-lg-4 col-md-4"> <button id="hero-submit" type="submit" class="submit-btn">Create</button> </div> </div> </form> <!--/ .register-form --> 

Проблема заключается в перенаправлении заголовка php:

 header("Location: $redirect_thankyou"); 

Это заставляет браузер загружать перенаправленную страницу в ваш вызов ajax:

 $.post("hero-form.php", $("#register-form").serialize(),function(result){ 

Таким образом, result будет содержать html-содержимое страницы, на которую вы перенаправляете, а не только sent слово.

Вам нужно удалить перенаправления header() в php и вместо этого отправить содержимое обратно, которое ожидает ваш ajax-вызов в jQuery. Json лучше подходит для этого, но одна строка также должна работать.

PHP

 if (mail($to, $subject, $message, $headers)) { echo $redirect_thankyou; die(); } else { echo $redirect_error"; die(); } 

Javascript

 $.post("hero-form.php", $("#register-form").serialize(),function(result){ if(result){ location.replace(result); $('#hero-success-notification').addClass('show-up'); $('#hero-submit').addClass('disabled'); } });