复选框中有一组值。它需要与附加值一起发送。在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 发送的内容:
{'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
关键字脱离了上下文。请参阅其他答案以获取可靠的解决方案。
当 JavaScript 尝试对您的 JQuery 对象进行字符串化时,$("input[name='site_select_[]']:checked")
它只会得到“对象对象”,我认为您必须创建一个可以更好地进行字符串化的自定义对象。
不要使用 info[],使用 info:
$.post(
'index.php',
{
info: [$("input[name='site_select_[]']:checked"), $(this).val()]
},
function(data){...}
);
我认为这可能有效
{info:
$.merge($("input[name=*site_select_]:checked").serializeArray(),
[$(this).val()])
}
它将选择器获取的对象序列checked
化为一个数组,然后您merge
可以将它们放在一起。
我不确定这将如何工作,因为我尚未对其进行测试,但由于这是一项“学习”练习,我认为您可以找到它。
警告:写得很快。