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 回答