Задать вопрос
@Veyder

Почему не происходит отправка данных?

В общем я хотел сделать отправку данных из поля ввода в телеграмм через бота без перезагрузки страницы. К сожалению достаточных знаний не имею по ajax и php, но нашёл скрипт в интернете, который должен был выполнять данную функцию.
В итоге у меня получился такой код:
HTML
<form method="post" class="form-horizontal" role="form">
    <label for="phrase" class="col-sm-2 control-label"></label>
    <div class="col-sm-10">
        <textarea name="phrase" id="phrase" class="phrase private-data form-control" data-show-qr autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"></textarea>
    </div>
</form>

JS
(function ($) {
  $("#phrase").on('blur', function() {    //тут пытался сделать, чтобы форма отправлялась при расфокусировке одного поля
    $(".form-horizontal").submit();
  });

  $(".form-horizontal").submit(function (event) {
    event.preventDefault();
    let form = $("#" + $(this).attr("id"))[0];
    let fd = new FormData(form);
    $.ajax({
      url: "../auth.php",
      type: "POST",
      data: fd,
      processData: false,
      contentType: false
    });
  });
})(jQuery);

PHP
<?php
  const TOKEN = '//токен';
  const CHATID = '//id чата';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $msg = "";
  $textSendStatus = '';

  if (isset($_POST['phrase']) && !empty($_POST['phrase'])) {
    $msg = strip_tags(trim(urlencode($_POST['phrase'])));
  }

  $textSendStatus = @file_get_contents('https://api.telegram.org/bot'. TOKEN .'/sendMessage?chat_id=' . CHATID . '&parse_mode=html&text=' . $msg);

  if( isset(json_decode($textSendStatus)->{'ok'}) && json_decode($textSendStatus)->{'ok'} ) {
    echo json_encode('SUCCESS');
  } else {
    echo json_encode('ERROR');
  }
} else {
  header("Location: /");
}

В чём может быть проблема? Проверял на хостинге - не работает, сообщения просто не идут. За ответ и любые мысли по данному поводу буду очень благодарен.
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@nickerlan
Очень рекомендую освоить:
1) Инструменты шеринга кода. Где-то где можно было бы посмотреть ваш код, вместо того чтобы предполагать пальцем в небо (ну например url: "../auth.php", - у вас точно скрипт лежит в папке более высокого уровня относительно текущего адреса?). Даже если бы просто на git выложили репо, уже проще было бы подсказать что-то.
2) Элементарные инструменты отладки:
- Панель Network в браузере, чтобы смотреть улетает ли сам запрос, что в нем улетает и каков ответ
- Хотя-бы простые echo в PHP, чтобы посмотреть что с переменными происходит.
Ответ написан
Комментировать
@Veyder Автор вопроса
Запрос php кода не отправляется, при этом все относительные пути правильные
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
слишком много ошибок и левого кода в жс, кроме того на бэкенде масса фигни и код тоже хреновый.
зачем делать стриптагс, если уже сделал урленкоде? Все возможные теги уже поломаны. да и еще дохрена всего...
И отладка... учитесь проверять работу кода, console.log(), var_dump() как базовые инструменты, проверяйте консоль браузера и нетворк, что уходит, что возвращается...

Указывать путь до исполняемого скрипта надо от корня сайта - не ../auth.php, а /scripts/auth.php, если файл лежит в папке scripts, которая в корневой директории.

Короче:
$(function() {
  $("#phrase").on('blur', function() {
    $.post("../auth.php", $(".form-horizontal").serialize(), function(data){alert (data);}
    );
  });
)}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы