复选框中有一组值。它需要与其他值一起发送。在PHP我得到这个:
> Array (
> [0] => [object Object]
> [1] => value )
我的代码是:
$.post('index.php', {'info[]':
[$("input[name='site_select_[]']:checked"),
$(this).val()]}, function(data){data});
答案 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
将它们组合在一起。
我不确定这是如何工作的,因为我没有测试过,但由于这是一个“学习”练习,我认为你可以找到它。
警告:写得很快。