Как получить ответ при отправке данных 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 шт):
Вам нужно дописать логику обработки ответа в ваш js/send_to_telegram.php и проверить, действительно ли вы получили тот ответ от API телеграмма, который и ожидали, если нет, то ответить клиенту с каким-то статус кодом, отличным от 200-ого (например: 404, если такого токена нет или же 400, если в запросе возникла другая ошибка), именно статус код кответа от сервера заведет вас в блок error на клиенте в ajax запросе.
Могу предположить, что API телеграмма отвечает вам в любом случае с 200-ым кодом, именно поэтому, у вас отрабатывает fopen и не возвращает false.
Загляните внутрь полученных данных и считайте ошибку, которую вам отдал телеграмм или же определите ее как-то иначе.
UPD: самый простой способ упасть в блок error в вашем случае, это бросить исключение.
throw new Exception('Internal server error', 500);