Как получить ответ при отправке данных php telegram?

Подскажите, как сделать, чтобы если в js/send_to_telegram.php будет ошибка то сработал сценарий error?

jQuery("form").submit(function () {
        var form_data = jQuery(this).serialize();
        jQuery.ajax({
            type: "POST",
            url: "js/send_to_telegram.php",
            data: form_data,
            success: function (result) {
                donemodal.style.display = "block";
            },
            error: function (jqXHR, exception) {
                errormodal.style.display = "block";
            }
        });
    });

в js/send_to_telegram.php следующий код:

<?php
$token = "5306003979:AAEPK2NhlxW";
$chat_id = "497358";
$txt = htmlspecialchars($_POST["text"]);

$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
?>

Сейчас, даже если вписать неправильный token в $sendToTelegram, выдает success. Как получить error если token неправильный?


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

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

Вам нужно дописать логику обработки ответа в ваш js/send_to_telegram.php и проверить, действительно ли вы получили тот ответ от API телеграмма, который и ожидали, если нет, то ответить клиенту с каким-то статус кодом, отличным от 200-ого (например: 404, если такого токена нет или же 400, если в запросе возникла другая ошибка), именно статус код кответа от сервера заведет вас в блок error на клиенте в ajax запросе.

Могу предположить, что API телеграмма отвечает вам в любом случае с 200-ым кодом, именно поэтому, у вас отрабатывает fopen и не возвращает false.

Загляните внутрь полученных данных и считайте ошибку, которую вам отдал телеграмм или же определите ее как-то иначе.

UPD: самый простой способ упасть в блок error в вашем случае, это бросить исключение.

throw new Exception('Internal server error', 500);
→ Ссылка