给定
$.post('dealWithStuff.php',{'fullArray':['hello','goodby'],'emptyArray':[]});
dealWithStuff.php接收
['fullArray'=>['hello','goodby'] ]
但不是
['fullArray'=>['hello','goodby'], 'emptyArray'=>[] ]
如何将emptyArray发送到服务器?
我来破解一下。
就在我们开始之前,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
(
)
)
使用null,这是JSON中的合法值。
出于好奇,为什么要向服务器发送一个空数组?您只需要检查服务器端是否设置了数组。(isset((for php(
发送一个空数组实际上没有意义。想想浏览器会向服务器发送什么。发送给您的邮件的数据将是:
fullArray[]:hello
fullArray[]:goodby
在PHP中可以翻译为:
$_POST['fullArray'] = array(0 => "hello", 1 => "goodby");
但如果你要发送
emptyArray[]:
它将被视为一个空字符串值,您将得到如下内容:
$_POST['emptyArray'] = array(0 => "");
这可能不是您想要的(也不是jQuery所做的(。如果可能,请更改后端以检测密钥的存在。