Добрый день! Решаю задачу отправки данных формы в телеграмм чат ( код будет ниже ). Сначала реализовал это топорно , после успешной отправки формы юзера кидало на пустую страницу с текстом "Спасибо! В ближайшее время наш менеджер свяжется с Вами"
Решил реализовать отправку через ajax с помощью fetch , но столкнулся с трудностями. Код ниже
Вот html код формы
<form action="telegram.php" method="POST" class="form-top">
<div class="step">
<input required type="text" name="name" placeholder="Ваше имя*">
<input required type="text" name="phone" placeholder="Ваш телефон*">
<input required type="text" name="car" placeholder="Ваш автомобиль*">
<input type="hidden" name="page" value="Главная страница">
</div>
<button type="submit">Получить консультацию</button>
</form>
js код
const ajaxSend = (formData) => {
fetch('telegram.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: formData
})
.then(response => alert("Заявка успешно отправлена"))
.catch(error => console.error("Ошибка"))
};
const forms = document.querySelector("form");
// for (let i = 0; i < forms.length; i++) {
forms.addEventListener('submit', function (e) {
e.preventDefault();
const formData = new FormData();
const inputs = document.querySelectorAll("form input[type='text']");
for(let item of inputs){
formData.append(item.name, item.value);
}
// for(let [name, value] of formData) {
// console.log(`${name} = ${value}`);
// }
ajaxSend(formData);
this.reset();
});
php обработчик
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (!empty($_POST["name"]) && !empty($_POST["phone"]) && !empty($_POST["car"]) && !empty($_POST["page"])){
if (isset($_POST['name'])) {
if (!empty($_POST['name'])){
$uname = strip_tags($_POST['name']);
$unameFieldset = "Имя:%20";
}
}
if (isset($_POST['phone'])) {
if (!empty($_POST['phone'])){
$uphone = strip_tags($_POST['phone']);
$uphoneFieldset = "Телефон:%20";
}
}
if (isset($_POST['car'])) {
if (!empty($_POST['car'])){
$formInfo = strip_tags($_POST['car']);
$formInfoFieldset = "Автомобиль:%20";
}
}
if (isset($_POST['page'])) {
if (!empty($_POST['page'])){
$pagename = strip_tags($_POST['page']);
$pagenameset = "Страница:%20";
}
}
$token = "";
$chat_id = "";
$arr = array(
$unameFieldset => $uname,
$uphoneFieldset => $uphone,
$formInfoFieldset => $formInfo,
$pagenameset => $pagename
);
foreach($arr as $key => $value) {
$txt .= "<b>".$key."</b>".$value."%0A";
};
$sendToTelegram = fopen("https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$chat_id."&parse_mode=html&text=".$txt,"r");
if ($sendToTelegram == 'false') {
echo '<p class="fail"><b>Ошибка. Сообщение не отправлено!</b></p>';
} else {
echo '<h3 class="success">Спасибо! В ближайшее время наш менеджер свяжется с Вами.</h3> ';
}
} else {
echo '<p class="fail">Ошибка. Вы заполнили не все обязательные поля!</p>';
var_dump($_POST);
}
} else {
header ("Location: "); // главная страница вашего лендинга
}
После сабмита, вижу поп ап с сообщением об успешной отправке данных , но в телеграмм значение полей формы не приходит. Я открыл вкладочку Нетворк , посмотреть ответ от обработчика telegram.php и увидел что попадаю в ветку else , в которой выводиться сообщение "Ошибка. Вы заполнили не все обязательные поля!"
В данной ветке вывожу через вар дамп массив $_POST
результат на скрине ниже
Вопрос в том , как мне в php правильно вытянуть отсюда данные полей форм
заранее спасибо за ответы!