[php mail(),带有通过ajax附加的附件,对我不起作用

问题描述 投票:0回答:2

如何通过ajax发送带有php mail()附件的电子邮件,而不重新加载页面

有正在使用的代码有问题,但我不知道这是什么

存在html和ajax请求

<form action="send.php" id="data" method="post" accept-charset="utf-8" enctype="multipart/form-data">

    <input type="email" id="email" name="email" placeholder="email"> <br>
    <textarea name="msg" id="msg" placeholder="message"></textarea> <br>
    Attach File <br>
    <input type="file" name="attach1"><br>
    <input type="file" name="attach2"><br>
    <input id="send" type="submit" value="submit">
</form>

并且这里的ajax代码正在使用jQuery 2.1.1

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
    $(document).ready(function() {
        $('#data').submit( function( e ) {
            var formData = new FormData($(this)[0]);

            $.ajax({
                url: window.location.pathname,
                // url: "send.php",
                type: 'POST',
                data: formData,
                async: false,
                success: function (data) {
                    alert(data)
                    // alert(window.location.pathname)
                },
                cache: false,
                contentType: false,
                processData: false
            });
            return false;
        });
    });
</script>
php jquery ajax email attachment
2个回答
0
投票

像这样更改脚本

<script>
    $(document).ready(function() {
        $('#data').submit( function( e ) {
            e.preventDefault()
            var formData = new FormData();
            formData .append('email', $("input[name='email']" ).val());
            formData .append('msg', $("input[name='msg']" ).val());
            formData .append('msg',$("input[name='attach1']")[0].files[0]).val());
            formData .append('msg',$("input[name='attach2']")[0].files[0]).val());

            $.ajax({
                url: window.location.pathname,
                // url: "send.php",
                type: 'POST',
                data: formData,
                async: false,
                success: function (data) {
                    alert(data)
                    // alert(window.location.pathname)
                },
                cache: false,
                contentType: false,
                processData: false
            });
            return false;
        });
    });
</script>

0
投票

我对jQuery不太熟悉,因此请原谅jQuery和Vanilla的弗兰肯斯坦混合体-但是您可以尝试这样。您将需要处理表单提交-查看控制台以查看请求的内容以了解如何处理。

<?php
    if( $_SERVER['REQUEST_METHOD']=='POST') {
        ob_clean();

        /* process input data / form submission here - send emails etc */
        $data=file_get_contents('php://input');
        exit( $data );
    }
?>
<!DOCTYPE html>
<html lang='en'>
    <head>
        <meta charset='utf-8' />
        <title></title>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script>
            $(document).ready(function() {
                $('#send').click( function( e ) {
                    e.preventDefault();
                    var formData = new FormData( document.getElementById('data') );

                    $.ajax({
                        url:location.href,
                        type:'POST',
                        data: formData,
                        async: false,
                        success: function(data) {
                            alert(data)
                        },
                        cache:false,
                        contentType:'text',
                        processData:false
                    });

                });
            });
        </script>
    </head>
    <body>
        <form action="send.php" id="data" method="post" accept-charset="utf-8" enctype="multipart/form-data">
            <input type="email" id="email" name="email" placeholder="email"> <br>
            <textarea name="msg" id="msg" placeholder="message"></textarea> <br>
            Attach File <br>
            <input type="file" name="attach1"><br>
            <input type="file" name="attach2"><br>
            <input id="send" type="submit" value="submit">
        </form>
    </body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.