使用AJAX将输入文件发送并处理到PHP,而不使用Formdata

使用AJAX将输入文件发送并处理到PHP,而不使用Formdata,php,ajax,file,email,email-attachments,Php,Ajax,File,Email,Email Attachments,在表单中,我使用php用值填充一些元素。我在表单中还有一些输入,比如输入文件和文本区域。Α在收集了JS中的所有值之后,我尝试在php文件中使用AJAX传递它们 我可以在php文件中处理所有非文件元素,但我不知道如何将输入文件发送到php脚本并将文件附加到电子邮件 我尝试了FormData方法,但没有成功。下面您可以找到我现在开发的部分代码 有没有关于使用ajax成功发送输入文件的建议,以及如何在php中处理它 HTML PHP FormData是唯一的方法。您使用FormData尝试了什么失败的

在表单中,我使用php用值填充一些元素。我在表单中还有一些输入,比如输入文件和文本区域。Α在收集了JS中的所有值之后,我尝试在php文件中使用AJAX传递它们

我可以在php文件中处理所有非文件元素,但我不知道如何将输入文件发送到php脚本并将文件附加到电子邮件

我尝试了FormData方法,但没有成功。下面您可以找到我现在开发的部分代码

有没有关于使用ajax成功发送输入文件的建议,以及如何在php中处理它

HTML PHP
FormData是唯一的方法。您使用FormData尝试了什么失败的方法?还需要在PHP中移动它。。。另见:
<form role="form">
    <div class="col-md-7">
        <div class="user-name">
             <span>@</span>
             <h2 id="usr"><?php echo "".$arr['user']['username']; ?></h2>

        </div>
    </div>
    <div id="photoup1" class="">
         <div class="form-group">
             <label for="photo1" class="upimg"><i class="fa fa-upload" aria-hidden="true"></i> Choose a Photo</label>
                    <input type="file" name="photo1" id="photo1">
          </div>
    </div>
</form>
jQuery(function() {
        jQuery("#submit").click(function() {

        var error = false;

        var vardata = new Array();

        var obj = {};

        var username = jQuery.trim(jQuery("#usr").text());
        var photo1 = jQuery("#photo1")[0].files[0];     

        console.log(photo1);

        obj['username'] = username;
        obj['photo1'] = photo1;

        vardata.push(obj);


        console.log(vardata);   


if (error==false){
    jQuery("#submit").attr({"disabled" : "true", "value" : "Loading..." });

    jQuery.ajax({
    type: "POST",
    url: "/mailsender.php?dataafter",
    data: {'vardata' : JSON.stringify(vardata)},
    cache: false,             // To unable request pages to be cached
    success: function(){
                jQuery("#submit").remove();
                console.info("Well done!");
    },
    error: function(){
                console.error("There was an error sending the AJAX call...");
    }
});
//end of ajax
}
return false;
    });
});
<?php

require 'PHPMailerAutoload.php';

if($_POST){


    $mail = new PHPMailer;
    $mail->isSendmail();
    $mail->setFrom('FROM EMAIL', 'First Last');
    $mail->addAddress('MY EMAIL', 'Nick Ivit');
    $mail->Subject = 'PHPMailer file sender 6test';
    $mail->isHTML(true); 



    $request = $_POST['vardata'];
    $r = json_decode($request, true);

    foreach ($r as $key => $value) {
            $username = $value['username'];
        }

    $mail->Body = ''.$username.'';

    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    }else {
        echo "Message sent!";
    }

?>