Отправка почты ajax + php

163
27 декабря 2018, 15:20

Всем привет, нормального ответа на мой вопрос я не нашел, поэтому задаю его здесь: HTML + ajax

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Отправка</title>
</head>
<body>
    <form id="form" method="POST">
        <input type="text" name="name" required="required"/>
        <input type="text" name="phone" required="required"/>
        <input type="submit" value="Заказать звонок"/>
    </form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        $("#form").submit(function() { //устанавливаем событие отправки для формы с id=form
                var form_data = $(this).serialize(); //собераем все данные из формы
                $.ajax({
                type: 'POST', //Метод отправки
                url: 'send.php', //путь до php фаила отправителя
                data: form_data,
                        success: function(data){ // сoбытиe пoслe удaчнoгo oбрaщeния к сeрвeру и пoлучeния oтвeтa
                        alert('все ок'); // пoкaжeм eё тeкст
                        }
                });
        });
    });    
</script>
</body>
</html>

Теперь PHP

<?
if((isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['phone'])&&$_POST['phone']!="")){ //Проверка отправилось ли наше поля name и не пустые ли они
        $to = 'vayka2@yandex.ru'; //Почта получателя, через запятую можно указать сколько угодно адресов
        $subject = 'Обратный звонок'; //Загаловок сообщения
        $message = '
                <html>
                    <head>
                        <title>'.$subject.'</title>
                    </head>
                    <body>
                        <p>Имя: '.$_POST['name'].'</p>
                        <p>Телефон: '.$_POST['phone'].'</p>                        
                    </body>
                </html>'; //Текст нащего сообщения можно использовать HTML теги
        $headers  = "Content-type: text/html; charset=utf-8 \r\n"; //Кодировка письма
        $headers .= "From: Отправитель <from@example.com>\r\n"; //Наименование и почта отправителя
        mail($to, $subject, $message, $headers); //Отправка письма с помощью функции mail
}
?>

Короче ребят спасайте уже 2 дня над ним бьюсь, и он не работает! Не работает именно сам Ajax, так как, если писать action, то php обрабатывает и отправляет письмо, но сам ajax не делает ничего. Что не так ? Все же правильно написано.

UPD: В отладчике, я ставлю брейк поинт, на ajax, скрипт начинает выполнятся в переменной form_data записываются мои данные, дальше дело переходит jquery страница обновляется и все. В консоле вот: TypeError: form.find is not a function

Answer 1

Вот эту строчку

 $("#form").submit(function() {

Замените на эту

$("#form").submit(function(e) {
    e.preventDefault()

preventDefault () - Отменяет событие, если оно отменяемое, без остановки дальнейшего распространения этого события. Источник

Или используте

<button type"button">Сохранить</button>

С событием

$('#form button').on('click', function () {
    // Your code
});
READ ALSO
Можно ли использовать Laravel Eloquent методы в цикле?

Можно ли использовать Laravel Eloquent методы в цикле?

В документации Laravel Eloquent есть методы например Model::UpdateOrCreate(), но нету примеров, как использовать эти методы для множества строк, в stackoverflow нашел...

155
Как вывести поле ACF в файле functions.php?

Как вывести поле ACF в файле functions.php?

В шаблоне имеется следующий код, выводящий 6 последних новостей:

212
Асинхронность в php

Асинхронность в php

друзья! У меня реализовано пару парсеров, который проходят капчу и тянут информацию, что занимает очень много времениОсобенно, если на сайте...

171
Не открывается файл на чтение Wordpress

Не открывается файл на чтение Wordpress

Работаю с библиотекой PHPExcel в Wordpress нужно прочесть данные из excel файла, взял отсюда - https://packagistorg/packages/phpoffice/phpexcel Получаю ошибку

161