-1

复选框中有一组值。它需要与附加值一起发送。在php中我得到这个:

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

我的代码是:

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

4 回答 4

1

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

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

这相当于:

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

因此,您正在发送一个转换为单个键/值对的 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关键字脱离了上下文。请参阅其他答案以获取可靠的解决方案。

于 2012-08-16T13:20:26.483 回答
1

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

于 2012-08-16T13:17:50.327 回答
0

不要使用 info[],使用 info:

$.post(
    'index.php',
    {
        info: [$("input[name='site_select_[]']:checked"), $(this).val()]
    },
    function(data){...}
);
于 2012-08-16T13:17:10.790 回答
0

我认为这可能有效

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

它将选择器获取的对象序列checked化为一个数组,然后您merge可以将它们放在一起。

我不确定这将如何工作,因为我尚未对其进行测试,但由于这是一项“学习”练习,我认为您可以找到它。

警告:写得很快。

于 2012-08-16T13:18:54.237 回答