質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%

Q&A

解決済

1回答

695閲覧

ajaxでpostした時にブラウザ別でデータが受け取れない

hidetakamaru

総合スコア32

0グッド

0クリップ

投稿2021/12/23 03:08

編集2021/12/23 03:11

前提・実現したいこと

画像データをajaxでpostしてcakePHPで受け取りたい

発生している問題・エラーメッセージ

IEでは正常に動作するがChrome・Edgeでは動作しない

該当のソースコード

ajax部分↓

var image = document.getElementById('image'); var formdata = new FormData(); formdata.append("image", image.files[0]); var ajax = new XMLHttpRequest(); ajax.open("POST", "{$UrlFormat->httpsUrl('/uploadImage')}", true); ajax.setRequestHeader("Content-Type","multipart/form-data"); ajax.send(formdata);

cakePHPのController↓

$image = $_FILES['image']; // 中身がnullになる

Controllerでデータがnullになります。
詳しい方おられましたら調べ方や注意点でもよいので教えていただきたいです。

補足情報(FW/ツールのバージョンなど)

cakePHP2系
Apache2.4.6
CentOS7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

いまさらIE対応が必要ですか?fetchでやってみてはどうでしょうか?

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 const image = document.querySelector('#image'); 4 image.addEventListener('change',()=>{ 5 const formdata = new FormData(); 6 formdata.append("image", image.files[0]); 7 const url="sample.php"; 8 fetch(url,{method:'post',body:formdata}).then(res=>res.text()).then(console.log); 9 }); 10}); 11</script> 12<input type="file" id="image">

//sample.php

PHP

1<?PHP 2print_r($_FILES);

投稿2021/12/23 03:56

yambejp

総合スコア115012

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hidetakamaru

2021/12/23 04:27

>> いまさらIE対応が必要ですか? どうやらIE対応してほしいとのことらしいので、、 fetchでもpostしてみたのですが、結果変わらずでした。 apacheの設定とかも関係あるのでしょうか。
yambejp

2021/12/23 04:35 編集

複数ブラウザで試した範囲では上記ソースでファイルを選んだときに バックグラウンドで送信されますね。 なにか特殊な環境なのでしょうか?OSやブラウザを明示されたほうがよいかと。 またIEの場合fetchのpolyfillが提供されているようですが結局ES6にも 対応していないので微妙ですね IEは非同期処理ではなく普通にサブミットするという切り分けが妥当かと。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問