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

192
13 января 2019, 22:40

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

Не могу понять в чем может быть проблема,помогите, пожалуйста) Разметка:

<form id="contact_form" method="post" action="php/mail.php">
    <input type="button" value="−" id="minus" class="mycount button-minus">
    <p id="count" name="lisence_count" class="mycount simple-count">1</p>
    <input type="button" value="+" id="plus" class="mycount button-plus">
    <input type="text" id="name" name="name" class="myinfo" placeholder="Ваше имя">
    <input type="text" id="phone" name="phone"  class="myinfo" placeholder="Телефон">
    <input type="email" id="email" name="email" class="myinfo" placeholder="Email">
    <button type="submit" id="send-button" class="submit-button">Подключить<span id="current-price" name="price" class="tarif-price">$10</span></button>
    </form>

JS:

$('#contact_form .submit-button').on('click', function() {
            //берем путь php обработчика
            order_url = $('#contact_form').attr('action');
            //посылаем асинхронный запрос на сервер и передаем все данные формы
            $.post(order_url,{
                name: $('#contact_form input[name=name]').val(),
                tel: $('#contact_form input[name=phone]').val(),
                email: $('#contact_form input[name=email]').val(),
                lisence_count: $('#contact_form #count').val(),
                price: $('#contact_form #current-price').val(),
                send: "1"
            }, "html");
        return false;
    });

PHP:

    header('Content-type: text/html; charset=utf-8');
error_reporting(0);
if(!empty($_POST['send'])) {
    $name = substr(htmlspecialchars(trim($_POST['name'])), 0, 300);
    $tel = substr(htmlspecialchars(trim($_POST['phone'])), 0, 100);
    $email = substr(htmlspecialchars(trim($_POST['email'])), 0, 100);
    $lisence = substr(htmlspecialchars(trim($_POST['lisence_count'])), 0, 100);
    $price = substr(htmlspecialchars(trim($_POST['price'])), 0, 100);
    $ip = $_SERVER['REMOTE_ADDR'];

    $mess  = "Имя: <b>".$name."</b><br />";
    $mess .= "Телефон: <b>".$tel."</b><br />";
    $mess .= "Email: <b>".$email."</b><br />";
    $mess .= "Количество лицензий: <b>".$lisence."</b><br />";
    $mess .= "Цена: <b>".$price."</b><br />";

    mail("thisismymail@gmail.com", $theme, $mess, "From: GSuite \nContent-Type: text/html;\n charset=utf-8\nX-Priority: 0");
}
else {
    echo "<h2>Ошибка! Попробуйте еще раз.</h2>";
}
Answer 1

Пусто потому, что:

The .val() method is primarily used to get the values of form elements such as input, select and textarea. When called on an empty collection, it returns undefined. https://api.jquery.com/val/

<p id="count" name="lisence_count" class="mycount simple-count">1</p>

это параграф, потому $('#contact_form #count').val() будет undefined

<span id="current-price" name="price" class="tarif-price">$10</span>

это тэг span, поэтому $('#contact_form #current-price').val() будет undefined

Телефон пуст потому, что в POST-запросе вы передаёте tel

tel: $('#contact_form input[name=phone]').val(),

а в php пытаетесь получить phone

$tel = substr(htmlspecialchars(trim($_POST['phone'])), 0, 100);
READ ALSO
Laravel связь моделей

Laravel связь моделей

Имеется проблема

181
Проблема кодировки на Apache на Windows2012

Проблема кодировки на Apache на Windows2012

Сломал голову, помогите пожалуйста решить проблемуУ меня есть небольшой скрипт, который выполняет php exec команду с каталогами на сетевом ресурсе

215
yii2 Авторизация по нескольким бд

yii2 Авторизация по нескольким бд

Нужно что бы при авторизации были три поля username, password, id_companyИ при авторизации id_company это был префикс базы данных

170