Я новичок в Php и Ajax, и я ударился головой об этой проблеме. Я пытаюсь получить мою простую форму для обновления с помощью ajax с помощью функции сокращения строки $.post
, но мой сценарий ничего не возвращает. Я попытался с $.ajax
, а также, и используются различные типы данных, как JSon объектов, переменная JSon, serialize()
.. и т.д.
HTML
<section class="contact" id="contact">
<h2>Do you have a project in mind? Let's discuss it</h2>
<div id="form-messages">
</div>
<form action="" method="post" id="contact-form">
<div class="row">
<div class="col span-1-of-4"><label for="name">Your name</label></div>
<div class="col span-3-of-4"><input type="text" name="name" id="name" placeholder="Enter your name ..."></div>
</div>
<div class="row">
<div class="col span-1-of-4"><label for="email">Your email</label></div>
<div class="col span-3-of-4"><input type="email" name="email" id="email" placeholder="Enter your email ..."></div>
</div>
<div class="row">
<div class="col span-1-of-4"><label for="message">Your message</label></div>
<div class="col span-3-of-4"><textarea name="message" id="message" placeholder="Type in your message ..."></textarea></div>
</div>
<div class="row">
<div class="col span-1-of-4"></div>
<div class="col span-3-of-4"><input type="submit" name="submit" id="submit" value="Send your message"></div>
</div>
</form>
</section>
PHP
<?php
$name= $_POST['name'];
$email= $_POST['email'];
$message= $_POST['message'];
$error="";
$result="";
if (isset($_POST["submit"])) {
if (!$name) {
$error="<br />Please enter your name";
}
if (!$email) {
$error.="<br />Please enter your email address";
}
if (!$message) {
$error.="<br />Please enter a message";
}
if ($_POST['email']!="" AND !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$error.="<br />Please enter a valid email address";
}
if ($error) {
$result='<div class="error-message"><p id="alert"><strong>There were error(s) in your form:</strong>'.$error.'</p></div>';
} else {
if (mail("[email protected]", "Gadmy Visions: Someone sent you a message!",
"Name: ". $_POST['name']."
Email: ".$_POST['email']."
Comment: ".$_POST['message'])) {
$result='<div class="success-message"><p id="alert"><strong>Thank you!</strong> I\'ll be in touch</p></div>';
} else {
$result='<div class="error-message"><p id="alert">Sorry, there was an error sending your message. Please try again later.</p></div>';
}
}
echo $result;
}
?>
JS
$(document).ready(function(){
$('#contact-form').on('submit',function(event){
$.post('contact.php',$('form').serialize(), function(data){
$('#form-messages').html(data);
});
//Prevent refresh
event.preventDefault();
});
});
Попробуйте 'var_dump ($ _ POST)' в вашем php-файле и проверьте, действительно ли вы отправляете данные. Кроме того: что говорят ваши консольные консоли/сетевые инструменты? Есть ли повторения? Опубликованы ли данные? – ccKep
Очевидно, что функция выполняется, и когда я регистрирую результат на консоли, он просто дает пустую строку. –
Ваш php-файл выводит что-то только в том случае, если '$ _POST [" submit "]' установлен, поэтому идея var_dump его содержимого, поскольку она, похоже, не выполняется. Также: log '$ ('form'). Serialize()' для консоли JS для дальнейшей отладки. – ccKep