【问题标题】:Ajax Form Submit with attachment带有附件的 Ajax 表单提交
【发布时间】:2015-07-11 10:16:47
【问题描述】:

我的网站上有一个表单,提交了真正的 ajax。此表格有一个附加 .pdf 文件的字段。尽管文件未与其余数据一起发送,但如何提交表单。

我怎样才能让它工作? 这是我的ajax代码:

$('#submit_btn').click(function () {
                $.ajax({
                    type: 'POST',
                    url: '/contact.php',
                    dataType: "json",
                    data: $('#contactform').serialize(),
                    success: function (data) {

                        console.log(data.type);
                        console.log(data.msg);

                        var nClass = data.type;
                        var nTxt = data.msg;

                        $("#notice").attr('class', 'alert alert-' + nClass).text(nTxt).remove('hidden');
                        //reset fields if success
                        if (nClass != 'danger') {
                            $('#contactform input').val('');
                            $('#contactform textarea').val('');
                        }

                    }
                });
                return false;
            });

在 php 方面,我设置了 phpmailer 并正在处理该文件:

if(!empty($_FILES['file'])) {
            $_m->addAttachment($_FILES['file']['tmp_name'],$_FILES['file']['name']); 
        }  

【问题讨论】:

    标签: ajax phpmailer


    【解决方案1】:
            $('#submit_btn').click(function () {
                        var formData = new FormData($('#contactform'));
                            $.ajax({
                                type: 'POST',
                                url: '/contact.php',
                               // dataType: "json",
                                data: formData ,
                          processData: false,
                            contentType: false,
                                success: function (data) {
    
                                    console.log(data.type);
                                    console.log(data.msg);
    
                                    var nClass = data.type;
                                    var nTxt = data.msg;
    
                                    $("#notice").attr('class', 'alert alert-' + nClass).text(nTxt).remove('hidden');
                                    //reset fields if success
                                    if (nClass != 'danger') {
                                        $('#contactform input').val('');
                                        $('#contactform textarea').val('');
                                    }
    
                                }
                            });
                            return false;
                        });
    

    【讨论】:

    • 感谢您的快速回复。我收到此错误:“未捕获的 TypeError:非法调用”?
    • 查看 PHPMailer 提供的 send file upload example 以了解如何正确执行此操作。
    • @Nithin Krishnan P:是的,现在表单提交了,但验证失败,因为它似乎获取了这样的 Post 数据:$_POST["name"] 似乎不再起作用了?
    • @Synchro:这个例子没有解释通过ajax提交表单!
    猜你喜欢
    • 2012-03-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2012-06-13
    • 2014-09-01
    • 2011-03-28
    相关资源
    最近更新 更多