Я пытаюсь вызвать php-скрипт после отправки формы с помощью AJAX. Вызывается PHP-скрипт, но ничего не происходит за пределами этого, нет сообщений электронной почты, сообщений об ошибках и т. Д., Но он перенаправляется на главную страницу, если к файлу php напрямую обращаются по URL-адресу, и свойство успеха действительно выполняет сброс формы. ТИА!
HTML:
<form id="form-box"> <img id="form-logo" src="images/framework/logo.png"> <p> <input name="first-name" id="first-name" type="text" maxlength="32" placeholder="First Name"> <label for="first-name">First Name</label></p> <p> <input name="last-name" id="last-name" type="text" maxlength="32" placeholder="Last Name"> <label for="last-name">Last Name</label></p> <p> <input name="email" id="email" type="text" placeholder="E-Mail"> <label for="email">E-Mail</label></p> <p> <textarea name="comment-feedback" id="comment"></textarea></p> <p> <input type="button" id="submit" value="Submit"></p> </form>
JavaScript:
$("#submit").on('click', function(){ var fileName = document.location.pathname.match(/[^/]+$/), firstName = $('#first-name').val(), lastName = $('#last-name').val(), emailVal = $('#email').val(), comments = $('#comment').val(); $.ajax({ type: 'POST', url: '../script/mail.php', data: {fname:firstName, lname:lastName, email:emailVal, comment:comments, fileName:fileName}, success: function(){ $('form').each(function() { this.reset(); }); } }); });
PHP: * Edit: Удалена проверка для целей тестирования. Это не сработало.
<?php $webmaster_email = "feedback@myDomain.com"; $index = "http://mydomain.com"; $email_address = $_POST['email']; $comments = $_POST['comment']; $fname = $_POST['fname']; $lname = $_POST['lname']; echo "$email_address"; echo "$comments"; echo "$fname"; echo "$lname"; /*function isInjected($str) { $injections = array('(\n+)', '(\r+)', '(\t+)', '(%0A+)', '(%0D+)', '(%08+)', '(%09+)' ); $inject = join('|', $injections); $inject = "/$inject/i"; if(preg_match($inject,$str)) { return true; } else { return false; } }*/ if (!isset($_REQUEST['email'])) { header("Location: $index"); exit; } elseif (empty($email_address) || empty($comments) || empty($fname)) { echo "<script type=\"text/javascript\">alert('Please fill in the required fields.');</script>"; exit; } // If email injection is detected, redirect to the error page. elseif (isInjected($email_address)){ echo "<script type=\"text/javascript\">alert('Please, Try Again.')"; exit; } // If we passed all previous tests, send the email then redirect to the thank you page. else { mail("$webmaster_email", "Feedback Form Results", $comments, "From: $email_address"); echo "<script type=\"text/javascript\">alert('Thank You for contacting us!')"; exit; } ?>