2

フォームで送信されたファイルをアップロードしようとしています。私はphpで試していますが、htmlとphpの間でJSとJqueryとajaxを使用しています(ページをリロードしたくないため)。そして、私は $_FILES に問題があります。

ここでは、javascript アクション (action="javascript: SendPresupMail();") を含むフォーム (ファイル入力を含む) を使用しています。

その JS 関数では、Jquery と ajax を少し使用します。その中に、php 関数への呼び出しがあります。

問題は、そのphp関数内で $_FILES が空であり、フォームで送信されたファイルをアップロードする必要があることです。

コードは次のとおりです。

HTML フォーム、JS の呼び出し:

<form action="javascript: sendPresupMail();" method="post" id="formId" enctype="multipart/form-data">
<input type="text" id="mail" name="mail" />
<input type="file" id="file_selected" name="file_selected" />
<input type="submit" value="Submit" />

JS 関数、および AJAX と JQUERY を使用した PHP の呼び出し:

function sendPresupMail() {
$.ajax({
    url: 'remote.php',
    type: 'post',
    data: {
    'w': 'sendPresupMail',
    'mail': document.getElementById('mail').value
    },
    success: function(data) {
        if(data != "ok" && data != ""){alert(data);}
        if(data == "ok"){alert("mail send.");}
    }
});

}

最後に、PHP コード:

private function sendPresupMail(){
    $filename = ($_FILES['file_selected']['name']);
            ...
            ...
}

そこのコードは無関係です。問題は、 $_FILES が空であるため、 $filename が何も受信していないことです(var_dumpでチェックしたところ、空です)。ファイルをアップロードできません。どうすればよいですか?

解決した

解決策は次のとおりです。実際には、思ったよりもずっと簡単でした。まず、iframe を作成します。これで、すべてのフォーム、javascript、ajax などが iframe 内で発生します。そのため、iframe が更新しているため、ページが更新されていないようです。とにかく答えてくれてありがとう!

4

3 に答える 3

0

$_POST も空かどうかを確認します。$_POST と $_FILES は、アップロードされたファイルupload_max_filesizepost_max_size

于 2013-09-09T20:58:56.903 に答える