Почему phpmailer не отправляет письмо с ajax при нажатии по кнопке?

Всем привет!

Не могу понять, где ошибка. Помогите, пожалуйста, разобраться. Пытаюсь отправить письмо при нажатии кнопки, но выдаёт ошибку, письмо не отправляется. Самого текста ошибки нет, удалось написать в js, чтобы возле кнопки появлялось слово "Ошибка". Главное, если не указывать if(isset($_POST['#request'])), то письмо отправляется, но каждый раз при перезагрузке страницы, а мне такого не надо...
Сильно не ругайте, если где ошибку допустил, по незнанию или невнимательности :)
Заранее благодарен.

<!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title></title>
        <link rel="stylesheet" href="css/style.css">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
      </head>
      <body>

        <div class="container">
          <div class="row">
            <div class="col-6 offset-3">
              <div id="app">
                <form method="POST" id="request">
                  <h1>{{ msg }}</h1>
                  <div class="form-group">
                    <label for="exampleInputEmail1">Номер магазина: </label>
                    <select v-model="selectedUser" class="form-control">
                      <option v-for="site in sites" v-bind:value="site">{{site.name}}</option>
                    </select>
                  </div>
                  <div class="form-group">
                    <label for="exampleInputPassword1">Адрес магазина: </label>
                    <span v-if="selectedUser!==null" class="address form-control">{{selectedUser.address}}</span>
                  </div>
                  <div class="form-group">
                    <label for="">Заявитель (инициатор заявки)</label>
                    <input type="text" class="form-control"><span></span>
                  </div>
                  <div class="form-group">
                    <label for="">Телефон заявителя</label>
                    <input type="text" class="form-control"><span></span>
                  </div>
                  <button type="submit" id="submit" class="btn btn-primary">Submit</button><span></span>
                </form>
              </div>
            </div>
          </div>
        </div>
        <?php 
        if(isset($_POST['#request'])){
          require 'phpmailer/class.phpmailer.php';
          require 'phpmailer/class.smtp.php';

          $mail = new PHPMailer;

          $mail->isSMTP();

          $mail->Host = 'smtp.gmail.com';
          $mail->SMTPAuth = true;
          $mail->Username = 'mail@gmail.com'; // логин от вашей почты
          $mail->Password = 'test'; // пароль от почтового ящика
          $mail->SMTPSecure = 'ssl';
          $mail->Port = '465';

          $mail->CharSet = 'UTF-8';
          $mail->setFrom = 'mail@gmail.com'; // адрес почты, с которой идет отправка
          $mail->FromName = 'Александр'; // имя отправителя
          $mail->addAddress('mail@yandex.ru', 'Александр');
          // $mail->SMTPDebug = 1;

          $mail->isHTML(true);

          $mail->Subject = 'Тема письма';
          $mail->Body = 'Привет, мир! <p>Это строка <b>HTML кода</b></p>';

          if(!$mail->send()) {
            echo 'Message could not be sent.';
            echo 'Mailer Error: ' . $mail->ErrorInfo;
           } else {
            echo 'ok';
           }
          }
        ?>
        <script src="https://unpkg.com/vue"></script>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    sites:[
                        {name:'203', address:'test'},
                        {name:'452', address:'test'},

                    ],
                    selectedUser: 'Выбери номер магазина',
                    msg: 'test'
                },

            });

            $(function(){
              'use strict';
                $('#request').on('submit', function(e){
                  e.preventDefault();
                  var fd  = new FormData (this);
                  $.ajax({
                    url:'index.php',
                    type: 'POST',
                    contentType: false,
                    processData:false,
                    data:fd,
                    success: function(msg){
                      if(msg == 'ok'){
                        $('#sumbit').next().text('Отправлено!');
                      }else{
                        $('#submit').next().text('Ошибка! ');
                      }
                    }
                  })
                })
            })
        </script>
      </body>
    </html>
  • Вопрос задан
  • 727 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Добавьте в PHP-код вывод print_r($_POST, true), и посмотрите, что там нет алемента массива с именем '#request' или 'request'. Там даже данные из <input>, будут, не будут, сомневаюсь, потому что у них имена name=xxx не назначены.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@morricone85
if(isset($_POST['#request'])){


Вот этот код, что обозначает? Как вы считаете?
Ответ написан
@Liuonid
насколько я знаю. button type="submit" всегда будет перезагружать страницу. button type="button" нужен.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 12:53
25000 руб./за проект
22 нояб. 2024, в 12:20
10000 руб./за проект
22 нояб. 2024, в 11:53
3000 руб./за проект