复选框中有一组值。它需要与附加值一起发送。在PHP中我得到这个:阵列内部阵列
> Array (
> [0] => [object Object]
> [1] => value)
我的代码是:
$.post('index.php', {'info[]':
[$("input[name='site_select_[]']:checked"),
$(this).val()]}, function(data){data});
复选框中有一组值。它需要与附加值一起发送。在PHP中我得到这个:阵列内部阵列
> Array (
> [0] => [object Object]
> [1] => value)
我的代码是:
$.post('index.php', {'info[]':
[$("input[name='site_select_[]']:checked"),
$(this).val()]}, function(data){data});
不要使用信息[],使用信息:
$.post(
'index.php',
{
info: [$("input[name='site_select_[]']:checked"), $(this).val()]
},
function(data){...}
);
JavaScript时试图字符串化您的JQuery对象$("input[name='site_select_[]']:checked")
它只获取“对象对象” 我认为你必须创建一个自定义对象,可以以更好的方式进行字符串化。
我想这可能工作
{info:
$.merge($("input[name=*site_select_]:checked").serializeArray(),
[$(this).val()])
}
它通过串行化的选择checked
得到到一个数组的对象,然后你用merge
把它们放在一起。
我不知道这将如何工作,因为我还没有测试过,但由于这是一个“学习”练习,我想你可以找到一个。
警告:写得很快。
让我们打破你通过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
关键字不在上下文中。请参阅其他答案以获得可靠的解决方案。
是的,目前我正在学习Ajax,我需要在PHP中发送所有数据 – user1564141 2012-08-16 13:31:52
问题是? – deceze 2012-08-16 13:17:34
你将不得不通过$(“input [name ='site_select _ []']:checked”)作为其对象 – Waygood 2012-08-16 13:17:52
为什么不发送'info'作为数组?在$'.post'调用之前设置它。 – Matt 2012-08-16 13:18:19