Jquery序列化为PHP数组

时间:2011-12-15 21:10:55

标签: php jquery serialization

我想通过使用jQuery序列化将HTML排序的结果发送到服务器。 如果我只发送结果,则此方法有效:

var result = $(this).sortable('serialize');

$.ajax({
    type: 'POST',
    url: '/cms/update/',
    data: result,
});

但我尝试将Javascript对象发送到包含序列化“结果”

的服务器

在PHP中,我得到一个数组,其中result_2作为序列化对象:

Array
(
    [ids_1] => miti_1_ti_2_col_2
    [article_id] => article_id_2
    [result_1] => 
    [ids_2] => miti_1_ti_2_col_1
    [result_2] => article_id[]=2
)

如何将此结果作为PHP中的数组?

2 个答案:

答案 0 :(得分:1)

据我所知,“结果”也是一个序列化的对象。

所以你必须首先反序列化结果。

然后你必须反序列化result2。这样的事情:

$res1 = unserialize($data);
if (isset($res1['result_2']){
   $res2 = unserialize($res['result_2']);
}

更新

我不知道数据中的result_2是否已经序列化。因此,这里有两个例子:

如果data_2未在数据中序列化:

$arr = array('id_1' => 'miti_1_ti_2_col_2',
             'article_id' => 'article_id_2',
             'result_1' => '',
             'ids_2' => 'miti_1_ti_2_col_1'
            );

$arr['result_2'] = $arr;

$test1 = serialize($arr);
$test1 = unserialize($test1);

如果data_2已在数据中序列化:

$arr = array('id_1' => 'miti_1_ti_2_col_2',
             'article_id' => 'article_id_2',
             'result_1' => '',
             'ids_2' => 'miti_1_ti_2_col_1'
            );

$arr['result_2'] = serialize($arr);

$test2 = serialize($arr);
$test2 = unserialize($test2);

$test2['result_2'] = unserialize($test2['result_2']);

此代码有效我检查了它。如果您的代码仍无效,请检查JS中的结果

答案 1 :(得分:1)

如果我理解正确,你需要将一个字符串如action [] = 1& action [] = 2转换成数组吗?

如果这是正确的,您可以使用以下内容:(当$ _POST [“order”] =“action [] = 1& action [] = 2”)

$result = preg_split("/&?action\[\]=/", $_POST["order"], -1, PREG_SPLIT_NO_EMPTY);

这会给你:

Array
(
    [0] => 1
    [1] => 2
)