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')
    })
});

По скрипту тоже вопросы:

  1. action и method лучше задавать в скрипте или в html?
  2. Подходит ли этот скрипт для отправки формы?
  3. Стоит ли использовать метод post для отправки email на сервер?

Ответы (1 шт):

Автор решения: Dmitry

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 "Успех";
?>

Касательно вопросов:

  1. Если отправляете данные без использования AJAX, то необходимо задавать method и action в атрибутах формы. Если используете AJAX, то method и action задаются непосредственно в скрипте (но action в нём называется url). Можно использовать AJAX, но при этом задавать method и action в атрибутах формы, после чего цеплять их в скрипте. Это позволит не лезть внутрь скрипта, если будет необходимо что-то поменять.

  2. Подходит.

  3. POST-запрос в данном случае более уместен.

→ Ссылка