Javascript 如何在jQuery中通过.post发送数组?

Javascript 如何在jQuery中通过.post发送数组?,javascript,php,jquery,arrays,serialization,Javascript,Php,Jquery,Arrays,Serialization,以下是我的代码,它不起作用: var sessionListJSON = GatherSessionsFromPage(); $.post('ajax.php', { _ExportMissingAddressesToXLS : 1, sessions : sessionListJSON // ARRAY }, function(data) { }); 下面是我的php尝试捕捉它: else if (array_key_exist

以下是我的代码,它不起作用:

var sessionListJSON = GatherSessionsFromPage();

    $.post('ajax.php', {
        _ExportMissingAddressesToXLS : 1,
        sessions : sessionListJSON  // ARRAY
    }, function(data) {

    }); 
下面是我的
php
尝试捕捉它:

else if (array_key_exists('_ExportMissingAddressesToXLS', $_POST)) { // {{{
    $sessions = $_POST['sessions'];
    ExportMissingParentAddressesToXLS($sessions);
} // }}}

如何通过这个
jQuery
.post
正确地发送这个数组,然后在PHP中检索它?另外,这是序列化的情况吗?如果是这样,您如何为JS/jQuery实现这一点?

jQuery会在
$.post()中为您自动序列化数组。在PHP中,
$\u POST['sessions']
将是一个数组,如果
sessionListJSON
是一个数组。您可以使用普通数组索引、
foreach
等来访问它

如果
sessionListJSON
实际上是一个JSON字符串,则需要用PHP对其进行解码:

$session = json_decode($_POST['sessions']);

当javascript和PHP之间传递任何复杂的数据结构时,我的建议是使用JSON序列化/反序列化,而不是依赖于
$\u POST
行为

这在javascript/jQuery中可能是这样的

var json = JSON.stringify({
   _ExportMissingAddressesToXLS : 1,
    sessions : sessionListJSON  // ARRAY
});
$.ajax({
    type: 'POST',
    url: 'ajax.php',
    contentType: 'application/json',
    dataType: 'json', // if you expect JSON in return
    data: json,  // your JSON string here
    success: // your success handler
    error: // your error handler
});
在PHP方面,由于您不处理表单编码的数据,因此需要读取PHP的原始输入。幸运的是,这非常简单,将POST数据转换为PHP对象/数组非常简单。就这么简单:

$json = file_get_contents('php://input');
$variable = json_decode($json);
请注意,使用默认的
json\u decode()
行为,您实际上会得到一个可以像这样使用的对象

if($variable->_ExportMissingAddressesToXLS === 1) {
     $sessions = $variable->sessions;
     ExportMissingParentAddressesToXLS($sessions);
}

如果它是JSON,那么它已经被序列化了——这就是JSON的全部内容。如果它是一个数组,那么将
JSON
放在变量名中会让人困惑;在ajax.php脚本中出现任何条件之前,就是这样。在我的脑海里,我正在传递一个数组,但在我的脑海里,它是一个数组。我猜它只是沿着JSON字符串