@Nasrula

Как вывести сообщения «Отправлено» и «ошибка» после отправки формы?

Имеется сайт с формами ( имя, номер, сообщение) все данные передаются в телеграмм (знакомый помог настроить). у самого сайта имелся ранее обработчик форм, он его поменял и теперь модальные окна не открываются.
var data = 'name=' + name + '&phone=' + phone + '&text= ' + message + '\n ' + window.location.hostname;
 console.log('data = '+data);

        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: 'http://fixi-pro.ru/ajax_order.php',
            data: data,
            success: function (data) {
                form.trigger('reset');
                if (data.status === true) {
                    $('[data-remodal-id=call-modal-success]').remodal().open();
                    try {
                        yaCounter46427409.reachGoal('OrderDone');
                        ga('send', 'event', 'KnopkaZakazaSFormy', 'Zayavka');
                        //gtag_report_conversion();
                    } catch (e) {
                        console.log(e.message)
                    }
                } else {
                    $('[data-remodal-id=call-modal-error]').remodal().open();
                }
            }
        });

    });


Вот обработчик php:
<?php

$token = "bot463504725:AAHfhNNz_aJA4iqj59Sa0Nx5EVravRMX8kM";
$chatid = "-272771015";

$name = $_POST['name'];
$phone = $_POST['phone'];
$mes = $_POST['text'];
$mes2 = $_POST['text2'];

$msgs = 
' Имя: '.$name.'
☎️ +'.$phone.'
 Сообщение: '.$mes.'
'.$mes2.'
';


$messaggio = (new \DateTime())->format('H:i').'
'.$msgs;

    $url = "https://api.telegram.org/" . $token . "/sendMessage?chat_id=" . $chatid;
    $url = $url . "&text=" . urlencode($messaggio);
    $ch = curl_init(data);
    $optArray = array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true
    );
    // apply those options
    curl_setopt_array($ch, $optArray);

    // execute request and get response
    $result = curl_exec($ch);
    echo $result;
    curl_close($ch);
    echo 'Message to telegram was sent. res = '.$result.'<br>';


?>

помогите настроить открытие модальных окон при отправки формы. Спасибо.
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
  • OKyJIucT
    @OKyJIucT
    Sunshine reggae
    После отправки возвращайте какой нибудь json из PHP, например

    echo json_decode(['status' => 'success']);

    вместо

    echo 'Message to telegram was sent. res = '.$result.'<br>';


    А в JS получайте его в блоке success и в зависимости от того, что вернулось, отображайте модальное окно, например, так:
    $.ajax({
                type: 'POST',
                dataType: 'json',
                url: 'http://fixi-pro.ru/ajax_order.php',
                data: data,
                success: function (data) {
                    form.trigger('reset');
                    if (data.status == 'success') {
                        // вызываем модальное окно, отправляем событие в метрику и ГА
                    } else {
                        // выдаем ошибку
                    }
                }
            });


    И вместо cURL в PHP вы можете использовать обычный file_get_contents - API телеграма метод GET также принимает.

    И здесь
    $ch = curl_init(data);
    у вас ошибка, data не нужна.

    Весь PHP обработчик будет выглядеть так

    <?php
    
    $token = "bot463504725:AAHfhNNz_aJA4iqj59Sa0Nx5EVravRMX8kM";
    $chatid = "-272771015";
    
    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $mes = $_POST['text'];
    $mes2 = $_POST['text2'];
    
    $msgs = 
    ' Имя: '.$name.'
    ☎️ +'.$phone.'
     Сообщение: '.$mes.'
    '.$mes2.'
    ';
    
    
    $messaggio = date('H:i').' '.$msgs;
    
    $url = "https://api.telegram.org/" . $token . "/sendMessage?chat_id=" . $chatid . "&text=" . urlencode($messaggio);
    
    $result = file_get_contents($url);
    
    echo json_encode(['status' => 'success']);


    Дополнительно можете проверять ответ от API телеграма, и в случае ошибки возвращать другой статус и в JS в зависимости от этого другие действия выполнять
    Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы