使用jQuery post或类似的异步JavaScript请求将空数组发送到服务器

时间:2014-07-25 01:21:42

标签: javascript php jquery ajax

鉴于

$.post('dealWithStuff.php',{'fullArray':['hello','goodby'],'emptyArray':[]});

dealWithStuff.php收到

['fullArray'=>['hello','goodby'] ]

但不是

['fullArray'=>['hello','goodby'], 'emptyArray'=>[] ]

如何将emptyArray发送到服务器?

3 个答案:

答案 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)