鉴于
$.post('dealWithStuff.php',{'fullArray':['hello','goodby'],'emptyArray':[]});
dealWithStuff.php收到
['fullArray'=>['hello','goodby'] ]
但不是
['fullArray'=>['hello','goodby'], 'emptyArray'=>[] ]
如何将emptyArray发送到服务器?
答案 0 :(得分:1)
我会给这个破解。
在我们开始之前,This would be a good question for you to read over.
你不能发送一个空数组,因为它看起来像这样:file.php?arra[]
。
发送时你需要这样做:
$.post('dealWithStuff.php',{'fullArray':['hello','goodby'],'emptyArray':['']});
请注意emptyArray
['']
而不是 []
?
这将为您提供如下响应:
Array
(
[fullArray] => Array
(
[0] => hello
[1] => goodby
)
[emptyArray] => Array
(
[0] =>
)
)
您将能够从后端访问它,您只需要从emptyArray
中删除该子数组元素。
很容易做到这样的事情:
foreach($_POST['emptyArray'] as $i => $derp) {
unset($_POST['emptyArray'][$i]);
}
假设您不想要emptyArray
中的任何项目。
之后,您将获得如下所示的回报:
Array
(
[fullArray] => Array
(
[0] => hello
[1] => goodby
)
[emptyArray] => Array
(
)
)
答案 1 :(得分:0)
发送一个空数组并没有多大意义。想想浏览器会发送到服务器的内容。为您的帖子发送的数据将是:
fullArray[]:hello
fullArray[]:goodby
将在PHP中翻译为:
$_POST['fullArray'] = array(0 => "hello", 1 => "goodby");
但如果你要发言,
emptyArray[]:
它将被视为空字符串值,您将得到类似的内容:
$_POST['emptyArray'] = array(0 => "");
这可能不是你想要的(而不是jQuery的功能)。如果可能,请更改后端以检测密钥是否存在。
答案 2 :(得分:0)
使用 legal value in JSON的空值。
为了好奇,你为什么要向服务器发送一个空数组呢?你可以检查服务器端是否设置了数组。 (isset() for php)