数组里面的数组

时间:2012-08-16 13:14:00

标签: php javascript jquery

复选框中有一组值。它需要与其他值一起发送。在PHP我得到这个:

> Array (
>     [0] => [object Object]
>     [1] => value )

我的代码是:

$.post('index.php', {'info[]': 
[$("input[name='site_select_[]']:checked"),
$(this).val()]}, function(data){data});

4 个答案:

答案 0 :(得分:1)

当JavaScript尝试对您的JQuery对象$("input[name='site_select_[]']:checked")进行字符串化时,它只获取“对象对象” 我认为你必须创建一个可以更好地进行字符串化的自定义对象。

答案 1 :(得分:1)

让我们分解您通过POST发送的内容:

 {'info[]': [$("input[name='site_select_[]']:checked"), $(this).val()]}

相当于:

 {
   'info[]': [
                $("input[name='site_select_[]']:checked"), 
                $(this).val()
             ]
 }

因此,您要将一个Object转换为单个键/值对的PHP数组:

 {
    'key' : 'value'
 }

关键是

  info[]

因此PHP评估为$result = array("info[]", $value);

值为

  [
      $("input[name='site_select_[]']:checked"), 
      $(this).val()
  ]

反过来又是一个包含两个值的Javascript数组,第一个是JQuery对象:

  $("input[name='site_select_[]']:checked")

第二个是this个对象的“值”,它不是上面提到的那个:

  $(this).val()

所以在PHP中你会有

  $result = array("info[]", array(..Jquery object..., jqueryvalue);

所以我认为你对Javascript和JQuery的基础知识有一些误解。

很明显,这种方式不起作用;你也传递了无用的数据,并且this关键字不在上下文中。请参阅其他答案以获得可靠的解决方案。

答案 2 :(得分:0)

请勿使用info [],请使用info:

$.post(
    'index.php',
    {
        info: [$("input[name='site_select_[]']:checked"), $(this).val()]
    },
    function(data){...}
);

答案 3 :(得分:0)

我认为这可能有效

{info: 
    $.merge($("input[name=*site_select_]:checked").serializeArray(), 
    [$(this).val()])
}

它将选择器checked获取的对象序列化为数组,然后使用merge将它们组合在一起。

我不确定这是如何工作的,因为我没有测试过,但由于这是一个“学习”练习,我认为你可以找到它。

警告:写得很快。