php код для получения данных формы
Нужна помощь с написанием php для сервера, так как в php совсем не разбираюсь. Есть форма где только одно поле а именно email которое нужно отправить на сервер. И получить с сервера ответ(успех\ошибка)
<form method="post" class='collectForm'>
<h3>SUBSCRIBE TO NEWS</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. </p>
<input type="email" name='email' placeholder="You e-mail">
<input type="submit" name='button' class="-btnType" value='SEND'>
</form>
Нужно отправить это значение на сервер с помощью ajax, написал такой скрипт:
$('.collectForm').submit(function(e){
var form = $(this);
$.ajax({
type: form.attr('method'),
url: 'ajax_ser.php',
data: form.serialize()
}).done(function(){
alert('succes')
}).fail(function(){
console.log('fail')
})
});
По скрипту тоже вопросы:
- action и method лучше задавать в скрипте или в html?
- Подходит ли этот скрипт для отправки формы?
- Стоит ли использовать метод post для отправки email на сервер?
Ответы (1 шт):
HTML:
<form method="post" class='collectForm' action='/path/to/script.php'>
<h3>SUBSCRIBE TO NEWS</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. </p>
<input type="email" name="email" placeholder="Your e-mail">
<input type="submit" name="send" class="-btnType" value='SEND'>
</form>
JS:
$(document).ready(function(){
$(".collectForm").submit(function(e){
e.preventDefault();
$.ajax({
url: $(this).attr('action'),
data: $(this).serialize(),
method: $(this).attr('method'),
dataType: 'html',
success: function(data) {
alert("Запрос доставлен. Вернулся ответ: "+data);
},
error: function(xhr,status) {
alert("Ошибка: "+status);
}
});
});
});
PHP:
<?php
if(!isset($_POST['email'])) die("Hacking attempt");
$email = htmlspecialchars($_POST['email']);
// делаем что-то с переменной $email
echo "Успех";
?>
Касательно вопросов:
Если отправляете данные без использования AJAX, то необходимо задавать method и action в атрибутах формы. Если используете AJAX, то method и action задаются непосредственно в скрипте (но action в нём называется url). Можно использовать AJAX, но при этом задавать method и action в атрибутах формы, после чего цеплять их в скрипте. Это позволит не лезть внутрь скрипта, если будет необходимо что-то поменять.
Подходит.
POST-запрос в данном случае более уместен.