【问题标题】:downloading pdf using jquery after submit function提交功能后使用jquery下载pdf
【发布时间】:2021-05-10 13:34:24
【问题描述】:

在此代码中来自https://www.codingsnow.com/2021/01/create-php-send-email-contact-form.html

<center>
    <h4 class="sent-notification"></h4>

    <form id="myForm">
        <h2>Send an Email</h2>

        <label>Name</label>
        <input id="name" type="text" placeholder="Enter Name">
        <br><br>

        <label>Email</label>
        <input id="email" type="text" placeholder="Enter Email">
        <br><br>

        <label>Subject</label>
        <input id="subject" type="text" placeholder=" Enter Subject">
        <br><br>

        <p>Message</p>
        <textarea id="body" rows="5" placeholder="Type Message"><textarea><!--textarea tag should be closed (In this coding UI textarea close tag cannot be used)-->
        <br><br>

         <a  id="linkID" href="#"  >   
        <button type="button" class="btn btn-primary"  onclick="sendEmail()" value="Send An Email" 
         >Submit</button>
        </a>
    </form>
</center>

<script src="http://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
    function sendEmail() {
        var name = $("#name");
        var email = $("#email");
        var subject = $("#subject");
        var body = $("#body");

        if (isNotEmpty(name) && isNotEmpty(email) && isNotEmpty(subject) && isNotEmpty(body)) {
            $.ajax({
               url: 'sendEmail.php',
               method: 'POST',
               dataType: 'json',
               data: {
                   name: name.val(),
                   email: email.val(),
                   subject: subject.val(),
                   body: body.val()
               }, success: function (response) {
                    $('#myForm')[0].reset();
                    $('.sent-notification').text("Message Sent Successfully.");
               }
            });
        }
    }

    function isNotEmpty(caller) {
        if (caller.val() == "") {
            caller.css('border', '1px solid red');
            return false;
        } else
            caller.css('border', '');

        return true;
    }
</script>
当我单击提交按钮时,我只想在提交成功时下载一个名为“./sales.pdf”的pdf

这是我试图在脚本中更改的代码,我添加了 $('#linkID').attr({target: '_blank', href : url});但这没有给出任何结果,没有下载 同样在phpmailer中...如果我尝试在同一页面上添加三个表单,它们都会停止工作..这与脚本完整性有关吗?

<script type="text/javascript">
    function sendEmail() {
        var name = $("#name");
        var email = $("#email");
        var subject = $("#subject");
        var body = $("#body");
        var url = "./Sales.pdf";


        if (isNotEmpty(name) && isNotEmpty(email) && isNotEmpty(subject) && isNotEmpty(body)) {
            $.ajax({
               url: 'sendEmail.php',
               method: 'POST',
               dataType: 'json',
               data: {
                   name:email.val(),
                   email: email.val(),
                   subject: body.val(),
                   body: body.val()
               }, success: function (response) {
                    $('#myForm')[0].reset();
                    $('#linkID').attr({target: '_blank', href : url});<<<<<----this
                                 }
            });
        }
    
    

【问题讨论】:

  • 我使用了这段代码,它对我有用。 'yourwebsite.net\assets\Fee\FeesStandard.csv?math=Math.random()">示例 Csv 文件'
  • 添加一个实际的超链接,可以像谷歌或其他任何东西一样进行测试,然后你可以添加动态路径
  • 这不会下载它,它只是链接它@Ajay2707

标签: javascript jquery


【解决方案1】:

自 jQuery 3.0 起,success: 函数不再起作用,因为它已被抑制,请参阅 https://api.jquery.com/jquery.ajax/

弃用通知:jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调从 jQuery 3.0 开始被删除。您可以使用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always() 代替。

但是您可以将这种安排用于新的 sendMail():

    function sendEmail() {
        var name = $("#name");
        var email = $("#email");
        var subject = $("#subject");
        var body = $("#body");

        if (isNotEmpty(name) && isNotEmpty(email) && isNotEmpty(subject) && isNotEmpty(body)) {
            $.ajax({
               url: 'sendMail.php',
               method: 'POST',
               dataType: 'json',
               data: {
                   name: name.val(),
                   email: email.val(),
                   subject: subject.val(),
                   body: body.val()
               }
            })
            .done(function(response) {
              //alert(response.status);
              $('#myForm')[0].reset();
              $('#linkID').attr({target: '_blank', href : "./sales.pdf", download: "download"});
              $('#linkID')[0].click();

            })
            ;
        }
    }

点击提交,发送邮件后会自动下载sales.pdf。

【讨论】:

  • 感谢回复 这似乎不起作用,当我按下下载按钮时没有任何下载:/您是否也进行了任何其他更改?我在哪里定义 锚标记?
  • 我在链接中添加了下载属性,以便在 sendemail .done() 时进行下载。
猜你喜欢
  • 1970-01-01
  • 2017-04-04
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
相关资源
最近更新 更多