質問: { 'imgPass': uploadPass, 'formdata': formdata }; $.ajax({ url: 'form.php', type: 'POST', data: data, processData: false, contentType: false, success: function (data) { alert(data); }, error: function (data) { alert("ajaxエラー"); } }); }); ``` ``` ``` 画像を送信しようとすると、PHP側から「ajaxから送信されてきたデータが空っぽだよ」が返ってくるということは そもそもデータが空?ということになると思うのですが、 画像を送らずURLのテキストのみを送れば動くものが、なぜ画像のデータが含まれると空と判定されるのか理由がわからず...。 そもそもこのjsでは画像が取得できていないのでしょうか? 何卒宜しくお願い致します。 --- ▼参考にしたサイト ・jQuery Ajaxでファイルを送りたい! ・コピペで使う!画像アップロード付きAjax(JQuery)フォームサンプル ・jQueryを使ってajaxでファイル送信 ・PHPの入力値確認ではなぜisset関数ではなくempty関数を使うのか
回答: 原因がわかりましたので、回答させていただきます。 mimetypeなどが原因ではありませんでしたすみません。 原因は、送信側の書き方で、**FormDataクラスの初期化の対象となる要素が間違っている**です。 現在、`input`要素を`FormData`の引数にいれておりますが、 `FormData`の引数にいれて有効になるのは、`form`要素です。 よって、正しくは下記になります。 ``` アップロードボタン ``` そもそも、FormDataクラスは、form要素(中のinputとかも全部含んだ)をJS上で扱えるようにするクラスみたいですね。 ただし、この状態で、データの送信はうまくいきましたが、アップロードはうまくいかなかったので、 この先は、php側の修正になるかと思います。