これは、「 AJAX を介して単一の送信ボタンで複数の HTML フォームを送信する」というタイトルの最後の質問の続きであり、非常に基本的な AJAX から始めたものだと思います。この質問を完全に理解するには、本当にその質問を読む必要があります。この質問の鍵は、他の変数データです...
したがって、jQueryで実行する基本的なAJAX送信スクリプトがあります。これは、以前の質問の回答と重複しており(「ボタン」から「input#publishimages」への変更を除いて)、複数のフォームを繰り返して送信するのにうまく機能しますモール:
function post_form_data(data) {
$.ajax({
type: 'POST',
url: 'verify.php',
data: data,
success: function () {},
error: function () {}
});
}
$('input#publishimages').on('click', function () {
$('form').each(function () {
post_form_data($(this).serialize());
});
});
送信されているフォーム (各フォームは 1 つの画像に等しいため、各画像を送信するために必要な回数だけ繰り返します。詳細は以前の質問を参照してください) も前の質問にあり、次のようになります。
<form id="image<?php echo $i; ?>">
<label>Name</label>
<input name="image[<?php echo $i; ?>][Name]" />
<label>Location</label>
<input name="image[<?php echo $i; ?>][Location]" />
<!-- etc, etc, for description, coordinates, camera etc -->
</form>
振り返ってみると、悲しいことに、それは少し骨抜きにされすぎていました。ここで、他の可変データビットが機能します。現在、追加情報について各画像の EXIF データを調べており、ユーザーがフォームに入力する必要があるデータが見つかった場合はフォームから入力を削除し、そうでない場合は入力を表示してユーザーが入力できるようにしています。自分自身を出します。そのため、フォームを含む PHP スクリプトは次のようになります (疑似コード)。
<form id="image<?php echo $i; ?>">
<label>Name</label>
<input name="image[<?php echo $i; ?>][Name]" />
// Examine EXIF Data
if (I find EXIF Location Data) {
$_POST['image'][$i]['location'] = $location;
} else {
<label>Location</label>
<input name="image[<?php echo $i; ?>][Location]" />
}
// etc, etc, similar situation occurs with camera make + model, date taken etc.
</form>
したがって、私が行っていることがわかるのは、情報が見つかった/見つからなかった場合に、フォームへの入力を動的に選択的に削除および追加することです。見つかった場合は、スーパーグローバルに情報を送信します$_POST
。そうでない場合は、フォームに入力をエコーアウトして、ユーザーが入力できるようにします。どうしたの?ジャバスクリプト。
これは問題です...
さて、参照すると$(this)
(もちろん を参照$('form')
)、いくつかの変数 (抽出できた EXIF データの量に応じて) のみが AJAX 経由で宛先に送信されます。存在しません-代わりに、それらを$_POST
スーパーグローバルに割り当てましたが、jquery スクリプトからアクセスできなくなりました。
そう...
投稿されたか、フォームの一部として送信されたかに関係なく、AJAX を介して画像に関連するすべてのものを送信先に送信できる方法が必要です。私はこれを達成する方法について完全に途方に暮れています...何か提案はありますか?