2012-08-16 99 views
-1

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

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

我的代码是:

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

问题是? – deceze 2012-08-16 13:17:34

+0

你将不得不通过$(“input [name ='site_select _ []']:checked”)作为其对象 – Waygood 2012-08-16 13:17:52

+1

为什么不发送'info'作为数组?在$'.post'调用之前设置它。 – Matt 2012-08-16 13:18:19

回答

0

不要使用信息[],使用信息:

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

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

0

我想这可能工作

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

它通过串行化的选择checked得到到一个数组的对象,然后你用merge把它们放在一起。

我不知道这将如何工作,因为我还没有测试过,但由于这是一个“学习”练习,我想你可以找到一个。

警告:写得很快。

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关键字不在上下文中。请参阅其他答案以获得可靠的解决方案。

+0

是的,目前我正在学习Ajax,我需要在PHP中发送所有数据 – user1564141 2012-08-16 13:31:52