AngularJS - отправляет элемент dom на сервер

Извините, если это повторяющийся вопрос, но я не нашел подходящего решения.

У меня есть представление в AngularJs (с диаграммами и данными отчета), и мне нужно отправить это же представление по электронной почте. Для этого мне нужно отправить его в BackEnd (PHP) и использовать этот элемент DOM в качестве содержимого электронной почты.

Я пробую это

ReportService.js

self.sendEmail = function(element) {
   return Restangular.oneUrl('mailer', 'http://localhost/send-email/').post(null,
{
    element: element
});
}

Controller.js

self.print = function () {

email = document.getElementById('email');
self.reportService.sendEmail(email)
 .then(function(data){
   console.info(data);
 });
}

Но сервер ничего не получает в данных POST

Все свойства объектов элементов DOM - неисчислимый. Таким образом, они не отправляются с запросами POST.

georgeawg 18.11.2018 16:41
Поведение ключевого слова "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) для оценки ваших знаний,...
0
1
189
2

Ответы 2

Вы можете получить доступ к html в элементе с помощью innerHtml(). Но это не будет соответствовать вашим требованиям, так как вы не получите необходимых стилей и js-кода, которые требуются для отображения вашего отчета. Все стили в почтовом содержимом должны быть только в сети, иначе клиент emai не отобразит их должным образом.

Вы можете использовать Html2Canvas и сделать снимок HTML. Это похоже на снимок экрана, поэтому все ваши стили также будут захвачены. Но получать html от клиента для внутренних операций - не лучшая идея.

https://html2canvas.hertzen.com/

Редактировать:

Другой подход - отправить весь html-документ (со всем, что требуется) на php со встроенными стилями. метод показан по ссылке ниже.

https://css-tricks.com/sending-nice-html-email-with-php/

Спасибо за вашу помощь. Я полагаю, что при передаче его на холст функциональность привязок HTML теряется, но можно ли добавить эту функциональность позже?

user1736258 18.11.2018 20:59

Я не знаю PHP, но вам, возможно, придется добавить ссылку на него позже, используя PHP. Что-то вроде накладки. Но подождите ... Почему бы не попробовать этот css-tricks.com/sending-nice-html-email-with-php отправить весь html-документ со встроенными стилями на php и создать электронную почту, как показано в ссылке выше. Отредактировал ответ

Abdul Aleem 19.11.2018 08:43

Я собираюсь попробовать, но это должен быть HTML-код, отображаемый в представлении, так как у меня есть выполненный JS, который показывает некоторые диаграммы. Кроме того, пользователь может изменить некоторые данные перед отправкой электронного письма.

user1736258 19.11.2018 14:30

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

Abdul Aleem 19.11.2018 16:46

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