Ajax关联数组

时间:2012-07-13 06:40:22

标签: php javascript html ajax

我对如何关联索引和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数组的答案,但我不认为他们回答了我的问题。

3 个答案:

答案 0 :(得分:3)

如果需要关联数组,请将变量初始化为一个。这样您就可以添加与特定属性相对应的值,如下所示:

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

答案 1 :(得分:2)

您不能在JS中使用关联索引数组。

您可以使用JS对象:

var value = {};

然后你可以这样做:

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

或者

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

答案 2 :(得分:0)

只是评论:

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

可以替换为:

    if (this.checked) {
      checked[this.name] = this.value;
    }