jQueryを使用して.ajax経由でhtmlフォームを送信する必要があります。ajax経由ではなく、通常どおり送信すると、すべてがうまく機能します。問題が発生するのは ajax への切り替えです。
フォームの入力数が変化しています。(特定のグループ内のユーザーごとに 1 つずつ、グループは異なる数のユーザーを持つことができます)。したがって、入力に次のように名前を付けます。
<input type="hidden" name="<?php echo 'sampleA['. $i .']'; ?>" value="sampleValue" />
$i はカウンターなので、入力は sampleA['1'] と sampleA['2'] などです。
各ユーザーに対して、同じ方法で行われる別の入力があり、これを sample2['1'] などと呼ぶことができます。
したがって、php では、これら 2 つの配列を取得し、同様のカウンターを使用してそれらを実行し、必要に応じてデータベースに挿入します。これはすべてうまくいきます。しかし、私はそれをajaxにする必要があります。
これらの 2 つの配列を jQuery の .ajax 関数を介して php スクリプトに渡すにはどうすればよいですか?
フォームで .serialize を使用してみましたが、すべてのユーザーの両方の入力を 1 つの配列にシリアル化し、php 側で正しくシリアル化解除できませんでした。
以下は機能しませんが、ここに含めて、私が何をしてきたかを示します。
function updateOnCourt() {
var thearray = $('#sub-form').serialize();
$.ajax({
url: 'sub-update.php',
method: 'POST',
data: thearray,
success: function() {
alert('Success: '+thearray);
}
});
}
そして私のPHPスクリプトで:
<?php
$size = count($_POST['thearray']);
$finally = json_decode($_POST['thearray'], true);
// start a loop in order to update each record
$i = 1;
while ($i < ($size+1)) {
// define each variable
$pid = $finally[$i];
$playing = $finally[$i];
$query = "UPDATE players SET
on_court = '{$playing}'
WHERE id = {$pid}";
mysql_query($query, $connection);
$i = $i + 1;
} ?>
私は何を間違っていますか?