Jquery 通过ajax发布上传的文件

Jquery 通过ajax发布上传的文件,jquery,ajax,Jquery,Ajax,我试图发布一个通过ajax上传的文件。当使用简单的post时,我的文件上传和验证不需要javascript。但是当javascript被打开并且表单必须通过ajax提交时,它就不起作用了。我相信通过ajax处理文件上传的方式有问题,但我不知道问题出在哪里 JQuery(这里是ajax): HTML格式: <form id="animate1" enctype="multipart/form-data" method="post" action="post.php">

我试图发布一个通过ajax上传的文件。当使用简单的post时,我的文件上传和验证不需要javascript。但是当javascript被打开并且表单必须通过ajax提交时,它就不起作用了。我相信通过ajax处理文件上传的方式有问题,但我不知道问题出在哪里

JQuery(这里是ajax):

HTML格式:

    <form id="animate1" enctype="multipart/form-data" method="post" action="post.php">

    <input id="first-name" name="first_name" type="text" value="" placeholder="First Name" maxlength="100">
    <input id="last-name" name="last_name" type="text" value="" placeholder="Last Name" maxlength="100">
    <input id="school-register" name="school" type="text" value="" placeholder="High School" maxlength="100">

    <label for="transcript">Transcript</label><input type="file" id="transcript" name="file">
姓氏和学校名称也是如此

文件的PHP:

if (isset($_FILES['file']) && $_FILES['file']['error'] == UPLOAD_ERR_OK)
{
        $fInfo = finfo_open(FILEINFO_MIME_TYPE);
        $mime = finfo_file($fInfo,$_FILES['file']['tmp_name']);
        $attach = false;
        switch($mime)
        {
        case 'application/pdf':
        $attach = true;
        break;
        default:
            $msg = "Wrong file format of transcript (please upload a PDF file)!";
            $_SESSION['msg'] = $msg;
            $url = "noJS.php";
            header("Location: $url");
            exit;
    }
    $mail->AddAttachment($_FILES['file']['tmp_name'],
        $_FILES['file']['name']);
}

在formdata中添加其他字段,并将formdata作为唯一的数据发送。这比您想象的要难。一些阅读:@KevinB事情是我的整个身体更大更复杂,这只是它的一部分。我使用的方式不正确吗?是的,formData由键/值对组成,将其作为键的值传递是没有意义的。此外,您是否需要此代码在IE9或更低版本中工作?因为formData在IE9及更早版本中不受支持。
if ((isset($_POST['first_name'])) && (strlen(trim($_POST['first_name'])) > 0)) 
{
$first_name = stripslashes(strip_tags($_POST['first_name']));
} 
else 
{
$msg = "Student's first name required!";
$_SESSION['msg'] = $msg;
$url = "noJS.php";
header("Location: $url");
exit;
}
if (isset($_FILES['file']) && $_FILES['file']['error'] == UPLOAD_ERR_OK)
{
        $fInfo = finfo_open(FILEINFO_MIME_TYPE);
        $mime = finfo_file($fInfo,$_FILES['file']['tmp_name']);
        $attach = false;
        switch($mime)
        {
        case 'application/pdf':
        $attach = true;
        break;
        default:
            $msg = "Wrong file format of transcript (please upload a PDF file)!";
            $_SESSION['msg'] = $msg;
            $url = "noJS.php";
            header("Location: $url");
            exit;
    }
    $mail->AddAttachment($_FILES['file']['tmp_name'],
        $_FILES['file']['name']);
}