1

連想インデックスと JavaScript について混乱しています。

私のJavaScriptでは、これを行います:

$("input[type=button]").click(function () {
    var checked = {};
    $('input[type=checkbox]').each(function() {
        if ($(this).is(':checked')) {
            checked[$(this).attr('name')] = $(this).val();
        }
    });

    var value = [];
    value.push($(this).siblings("input[type=text]").val());

    $.ajax({ url: "scripts/php/generatehtml.php",
        data: {action: value},
        type: 'post',
        dataType: "json",
        success: ...<cut for brevity>});

したがって、私の PHP コードでは、次のようにします。

if (isset($_POST['action']) && !empty($_POST['action'])) {
    var_dump($_POST['action']);
}

そして、これを取得します:

array(1) {
[0]=>
  string(5) "12277"
 }

ご覧のとおり、これはインデックス付き配列です。連想配列が必要です。しかし、私が次のようなことをするときはいつでも:

value['id'] = $(this).siblings("input[type=text]").val()

何も送信されません。

私は Ajax があまり得意ではありません。

注: 他の ajax 配列の回答も確認しましたが、私の質問には回答していないと思います。

4

3 に答える 3

3

連想配列が必要な場合は、変数を連想配列として初期化します。そうすれば、次のように特定のプロパティに対応する値を追加できます。

var value = {};
value['id']=$(this).siblings("input[type=text]").val();
于 2012-07-13T06:42:53.447 に答える
2

JS では連想インデックス配列を使用できません。

代わりに JS オブジェクトを使用できます。

var value = {};

次に、次のことができます。

value['id'] = $(this).siblings("input[type=text]").val()

または

value.id = $(this).siblings("input[type=text]").val()
于 2012-07-13T06:45:11.130 に答える
0

ただのコメント:

    if ($(this).is(':checked')) { 
        checked[$(this).attr('name')] = $(this).val();
    } 

次のように置き換えることができます:

    if (this.checked) {
      checked[this.name] = this.value;
    }
于 2012-07-13T07:09:53.467 に答える