Удаление html-элементов из html body в ajax перед отправкой его в виде данных в контроллер - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть страница JSP с двумя кнопками «скачать» и «отправлять сообщения».При нажатии кнопки Sendmail я вызываю метод ajax, который генерирует PDF-файл тела HTML и отправляет его на сервер (контроллер).

Я пытался использовать:

document.getElementById('reportbuttons').remove();

before:

doc.addHTML(document.body, function() {....

где «reportbuttons» - это идентификатор тега div, который включает кнопки «sendmail» и «download». Но обе кнопки исчезают после нажатия кнопки «sendmail».

</p>

<code>function sendMail() {
    let doc = new jsPDF('p','pt','a4');
    doc.setProperties({
        title: ' Report PDF Document',
        subject: 'subject',
        author: 'XYZ',
        keywords: 'generated, javascript, web 2.0, ajax',
        creator: 'ABC '
    });

    doc.addHTML(document.body, function() {
            var data = doc.output('datauristring');
            console.log(data);
              var reqJson = {};
                 reqJson.machineId = "<%=machineId%>";
                 reqJson.monthYear = "<%=monthYear%>";

                 reqJson.data = data;
                 console.log();
                 $.ajax(
                 {
                     url : "sendMail/",
                     type: "POST",
                     dataType: 'json',
                     data : JSON.stringify(reqJson),
                     contentType: "application/json",
                     success:function(data)
                     {
                         alert('mail sent successfully');
                         console.log(data);


                     }, 
                     error: function(data)
                     {

                     }
                   });
    });


}
</code>

Я хочу удалить эти две кнопки в созданном PDF-файле, но он не должен исчезать на веб-странице jsp.

1 Ответ

0 голосов
/ 05 апреля 2019

Не удаляйте свои кнопки до doc.addHTML(body,function(){}), вместо этого скрывайте эти две кнопки, и в случае успешного / ошибочного ответа на ваш вызов ajax снова покажите эти две кнопки.

                 success:function(data)
                 {
                     alert('mail sent successfully');
                     console.log(data);
                     document.getElementById('reportbuttons').style.display ="block";

                 }, 
                 error: function(data)
                 {
                     document.getElementById('reportbuttons').style.display ="block";
                 }

Обновление:

Создайте клон вашего документа и удалите элемент из клона, а затем отправьте обновленный клон на ваш контроллер с помощью ajax.

  var itm = document;
  var cln = itm.cloneNode(true);
  cln.getElementById("reportbuttons").remove();
...