0

ajax でアップロードしたファイルを投稿しようとしています。シンプルな投稿を使用すると、ファイルのアップロードと検証が JavaScript なしで機能します。しかし、javascript がオンになっており、フォームを ajax 経由で送信する必要がある場合、機能しません。ajax を介してファイルのアップロードを処理する方法に問題があると思いますが、何が問題なのかわかりません。

JQuery (ここでは ajax):

    var first_name = $('#first-name').val();
    var last_name = $('#last-name').val();
    var school = $('#school-register').val();
    var formData = new FormData('#transcript');
    var url="post.php";

    $.ajax({

           type: 'POST',
           url: url,
           data: {first_name: first_name,last_name: last_name,school:school,file:formData}
    })
       .done(function(response_data)
        {
                alert(response_data);
        });
       return false;

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($_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;
}

姓と学校名についても同様です。

ファイルの 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']);
}
4

0 に答える 0