[解決済み] FormDataに配列を追加し、AJAXで送信する。
2022-04-28 04:56:52
質問
配列、テキストフィールド、ファイルを含むマルチパートフォームを送信するためにajaxを使用しています。
メインデータに各VARを以下のように追加します。
var attachments = document.getElementById('files');
var data= new FormData();
for (i=0; i< attachments.files.length; i++){
data.append('file', attachments.files[i]);
console.log(attachments.files[i]);
data.append ('headline', headline);
data.append ('article', article);
data.append ('arr', arr);
data.append ('tag', tag);
その後、ajax関数を使ってPHPファイルに送信し、SQL DB内に格納します。
$.ajax({
type: "post",
url: 'php/submittionform.php',
cache: false,
processData: false,
contentType: false,
data: data,
success: function(request) {$('#box').html(request); }
})
しかし、PHP側では
arr
変数は、配列でありながら文字列として表示されます。
フォームデータとしてajaxで送らず、単純に
$.POST
オプションを使用すると、PHP側で配列として取得することができますが、その場合、ファイルを送信することができません。
何か解決策はありますか?
解決方法は?
いくつかの選択肢があります。
JSON文字列に変換し、PHPでパースする(推奨)。
JS
var json_arr = JSON.stringify(arr);
PHP
$arr = json_decode($_POST['arr']);
または キュリオスの方法
を介して配列を送信します。
FormData
.
推奨しません。でデータをシリアライズし、PHPでデシリアライズする。
JS
// Use <#> or any other delimiter you want
var serial_arr = arr.join("<#>");
PHP
$arr = explode("<#>", $_POST['arr']);
関連
-
要素ツリー制御によるvueTreeテーブル
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
JavaScriptのgetElementById()メソッド入門
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] JavaScriptの配列宣言で「Array()」と「[]」はどう違うのですか?
-
[解決済み] Ajaxを使用して1つのフォームでデータとファイルの両方をアップロードする?
-
[解決済み] [Solved] Jquery - $.post()でcontentType=application/jsonを使用するようにするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptの配列共通メソッド解説
-
vueにおけるv-forループオブジェクトのプロパティ
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】 Uncaught TypeError : undefined のプロパティ 'replace' を読み取れない In Grid
-
[解決済み】リクエストに失敗していないのに、「TypeError: failed to fetch」が表示される。
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
JavaScriptのStringに関する共通メソッド
-
[解決済み] クエリ文字列の中で配列を渡すには?