1

すべてのフォーム値を取得し、特定の変数または配列を使用して複数選択をシリアル化するにはどうすればよいですか?出力パラメータは;でなければなりません。

id=1&name_1=John&name_2=Juan&name_3=Isabel&name_4=Doe

名前複数選択されている場合

4

2 に答える 2

7

この回答が示すように、jQueryは、次の方法でシリアル化するときに、各選択のキーと同じ「名前」の値を使用します$(form).serialize()

id=1&name=John&name=Juan&name=Isabel&name=Doe

そしてそれを処理する方法を理解するのはサーバー次第です。サーバーがそれをうまく処理する可能性があります。

あなたが言及したフォーマットが絶対に必要な場合は、次のようなものを使用して一緒にハックできるはずです(テストされていません):

var elementArray = $(form).serializeArray();
var modifiedArray = [];
var counts = {};
var multipleValues = {};
$.each(elementArray, function(index, value) {
  if (counts[value.name]){ counts[value.name] += 1; } else { counts[value.name] = 1; }
});
$.each(elementArray, function(index, value) {
  if (multipleValues[value.name] || counts[value.name] > 1){ 
    if (!multipleValues[value.name]) { multipleValues[value.name] = 0; } else { multipleValues[value.name] += 1; }
    modifiedArray.push({name: value.name + "_" + multipleValues[value.name], value: value.value});
  } else {
    modifiedArray.push({name: value.name, value: value.value});
  }
});
var result = $.param(modifiedArray);
于 2012-10-17T03:33:21.887 に答える
5

PHPは、同じ名前の複数のリクエスト値を処理しません。それらを配列として投稿できます。これを行うには、html要素の名前タグの最後に[]を追加するだけです。

user[]=John&user[]=Bill&user[]=Adam

PHPでは次のようになります。

配列
((
    [ユーザー]=>配列
        ((
            [0]=>ジョン
            [1]=>ビル
            [2]=>アダム
        )。
)。
于 2013-05-30T14:23:05.107 に答える