Функция кнопки электронной почты AngularJS и PHPMailer

В настоящее время я разрабатываю приложение, которое позволяет пользователям отправлять электронные письма одним нажатием кнопки, будь то отдельное электронное письмо для отдельного человека или все контакты.

Я застрял в том, как связать AJAX с единственной кнопкой отправки и файлом PHPMailer.

Здесь находится кнопка «Отправить одиночный»:

<script type = "text/ng-template" id = "display">
    <td>{{data.customer_name}}</td>
    <td>{{data.customer_email}}</td>

    <td>
        <input type = "checkbox" name = "single_select" class = "single_select" />
    </td>
    <td>
        <button type = "button" class = "btn btn-info btn-sm email_button" ng-click = "sendData(data.customer_name)">Send Single</button>
    </td>

    <td>
        <button type = "button" class = "btn btn-primary btn-sm" ng-click = "showEdit(data)">Edit</button>
        <button type = "button" class = "btn btn-danger btn-sm" ng-click = "deleteData(data.id)">Delete</button>
    </td>
</script>

<script type = "text/ng-template" id = "edit">
    <td><input type = "text" ng-model = "formData.customer_name" class = "form-control"  /></td>
    <td><input type = "text" ng-model = "formData.customer_email" class = "form-control" /></td>
     <td></td>
     <td></td>
     <td>
         <input type = "hidden" ng-model = "formData.data.id" />
         <button type = "button" class = "btn btn-info btn-sm" ng-click = "editData()">Save</button>
         <button type = "button" class = "btn btn-default btn-sm" ng-click = "reset()">Cancel</button>
     </td>
</script>

Я попытался отредактировать то, что делает кнопка удаления, чтобы разрешить отправку, но не смог.

$scope.sendData = function sendData(){
    if (confirm("Are you sure you want to send?"))
    {
        $http({
            method:"POST",
            url:"send_mail.php",
        }).success(function(data){
            $scope.success = true;
            $scope.successMessage = data.message;
            $scope.fetchData();
        }); 
    }
}

Вот как сейчас выглядит приложение, ссылка ниже:

Изображение текущего приложения

РЕДАКТИРОВАТЬ

HTML-код электронного письма находится в файле PHPMailer, мне не нужно обрабатывать его через форму.

ОРИГИНАЛЬНАЯ РАБОЧАЯ ВЕРСИЯ

PHP

<?php
 $count = 0;
 foreach($result as $row)
 {
  $count++;
  echo '
  <tr id = "index_table">
   <td>'.$row["customer_name"].'</td>
   <td>'.$row["customer_email"].'</td>
   <td>
    <input type = "checkbox" name = "single_select" class = "single_select" data-email = "'.$row["customer_email"].'" data-name = "'.$row["customer_name"].'" />
   </td>
   <td><button type = "button" name = "email_button" class = "btn btn-info btn-xs email_button" id = "'.$count.'" data-email = "'.$row["customer_email"].'" data-name = "'.$row["customer_name"].'" data-action = "single">Send Single</button></td>
   </td>
   <td></td>
   <td><a href = "delete.php?id=<?php echo escape($row["customer_id"]); ?>"><button type = "button" name = "delete" id = "delete" data-row = "row"+count+"" class = "btn btn-danger btn-xs delete">DELETE</button></a></td>
  </tr>
  ';
 }
 ?>

AJAX (не понравился кодовый блок)

    $.ajax({
   url:"send_mail.php",
   method:"POST",
   data:{email_data:email_data},
   beforeSend:function(){
    $('#'+id).html('Sending...');
    $('#'+id).addClass('btn-danger');
   },
   success:function(data){
    if (data = 'ok')
    {
     $('#'+id).text('Success');
     $('#'+id).removeClass('btn-danger');
     $('#'+id).removeClass('btn-info');
     $('#'+id).addClass('btn-success');
    }
    else
    {
     $('#'+id).text(data);
    }
    $('#'+id).attr('disabled', false);
   }

  });
 });
});

Спасибо всем :)

Собственно вопрос: "Как сделать запрос ajax при нажатии кнопки в угловом"? Если да, то вам следует обновить свой вопрос, чтобы прояснить это (и, вероятно, удалить все ссылки на PHP и PHPMailer, поскольку они не имеют отношения к реальной проблеме). Если нет, то вопрос очень непонятный.

Magnus Eriksson 26.09.2018 13:13

Да, но надеялся, что кто-то из сообщества PHPMailer сможет помочь. Кто-то мог поступить точно так же, как я. Но пока уберу :)

CosmeticTechnician 26.09.2018 13:55

Поскольку речь идет не о PHPMailer, а об angular, вам следует включить только эту часть. Когда вы начнете работать и обнаружите, что у вас возникли проблемы с PHP и PHPMailer, вам следует задать о них отдельные вопросы. Важно, чтобы вопросы были минимальными и по возможности.

Magnus Eriksson 26.09.2018 13:56

Хороший крик, спасибо, Магнус. Пока вы здесь, есть идеи по поводу вышеизложенного?

CosmeticTechnician 26.09.2018 13:58

К сожалению, я лучше разбираюсь в PHP, чем в angular.

Magnus Eriksson 26.09.2018 13:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
85
2

Ответы 2

Здесь вы отправляете параметр, а в функции вы не получили

<button type = "button" class = "btn btn-info btn-sm email_button" ng-click = "sendData(data.customer_name)">Send Single</button>

обходной путь

$scope.sendData = function sendData(para){ 

Привет, Shokry, спасибо за помощь. Все еще не работает, поэтому я разместил весь код в PasteBin pastebin.com/g2c8SQ6p. Извините, я новичок в Ajax и PHP.

CosmeticTechnician 26.09.2018 13:47

проверьте xhr в браузере, я хочу знать, в чем ошибка?

Shokry Mohamed 26.09.2018 16:33

В Angualr Js вы должны передать параметр в скрипт PHP. Я предполагаю, что вы не передаете значение PHP.

var Indata = {param:'val1',.....}
$scope.sendData = function sendData(){
    if (confirm("Are you sure you want to send?"))
    {
        $http({
            method:"POST",
            url:"send_mail.php",
            params: Indata
        }).success(function(data){
            $scope.success = true;
            $scope.successMessage = data.message;
            $scope.fetchData();
        }); 
    }
}

Попробуйте этот метод,

Если вы все еще сталкиваетесь с проблемой, я думаю, что лучше, если вы поделитесь своим кодом PHP здесь ...

Привет, Сивапракаш! Только что попробовал ваше решение, но, к сожалению, теперь просто работает с {{successmessage}} и не отображает никаких данных из базы данных. Видите ли, у меня изначально это работало, но в моих глазах это был странный формат. Я вставлю это в сообщение о текущем выпуске.

CosmeticTechnician 26.09.2018 14:05

Кажется, все еще параметры не добавлены внутри HTTP-запроса и рядом с разделом URL. Убедитесь, что путь к файлу PHP правильный или нет.

Sivaprakash D 26.09.2018 14:13

Другие вопросы по теме