1

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;

} ?>    

私は何を間違っていますか?

4

1 に答える 1

1

thearrayはjavascriptの変数名にすぎないため、存在せず$_POST['thearray']、データはJSONとして送信されないため、使用する必要はありませんjson_decode

nameフォーム コントロールの属性にアクセスするには、次のようにします。

を見てみてください$_POST['sampleA']

docs をserialize()見ると、フォームが AJAX なしで送信された場合と同じ形式でデータが送信されることがわかります

API リファレンス: http://api.jquery.com/serialize/

于 2013-02-01T23:13:54.063 に答える