【问题标题】:Removing html elements from html body in ajax before sending it as data to controller在将其作为数据发送到控制器之前从 ajax 中的 html 正文中删除 html 元素
【发布时间】:2019-04-05 11:22:38
【问题描述】:

我有一个带有两个按钮“下载”和“发送邮件”的 JSP 页面。单击 Sendmail 按钮时,我正在调用一个 ajax 方法,该方法生成 HTML 正文的 pdf 并将其发送到后端(控制器)。

我尝试使用:

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

之前:

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

其中“reportbuttons”是包含“sendmail”和“download”按钮的 div 标签的 id。但是,一旦单击“sendmail”按钮,这两个按钮都会消失。

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) { } }); }); }

我想在生成的pdf中去掉这两个按钮,但是在jsp网页上应该不会消失。

【问题讨论】:

    标签: javascript ajax jsp pdf document-body


    【解决方案1】:

    不要在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();
    

    【讨论】:

    • 谢谢。但是,我想隐藏正在生成的 PDF 中的两个按钮,即在将其发送到控制器之前。
    • 然后在调用 doc.addHTML 方法之前隐藏两个按钮并在 ajax 响应上再次显示两个按钮
    • 我用这个“document.getElementById('reportbuttons').remove();”试过了但这也会使按钮在网页中消失(单击按钮)。
    • 是的。它会在 HTML 中消失,但是当您在 ajax 响应(成功/错误方法)中添加 document.getElementById('reportbuttons').style.display ="block" 时。它会再次出现。
    • 但这仅在页面重新加载时发生。我不希望这些按钮从网页中消失,而只能在生成 pdf 时删除。有没有办法做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多