Jquery序列化为PHP数组

Jquery序列化为PHP数组,php,jquery,serialization,Php,Jquery,Serialization,我想通过使用jQuery序列化将HTML排序的结果发送到服务器。 如果我只发送结果,则此选项有效: var result = $(this).sortable('serialize'); $.ajax({ type: 'POST', url: '/cms/update/', data: result, }); 但是我尝试将一个Javascript对象发送到包含序列化“result”的服务器 在PHP中,我得到一个数组,其结果_2作为序列化对象: Array (

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

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

$.ajax({
    type: 'POST',
    url: '/cms/update/',
    data: result,
});
但是我尝试将一个Javascript对象发送到包含序列化“result”的服务器

在PHP中,我得到一个数组,其结果_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中如何将这个结果变成数组?

据我所知,“result”也是一个序列化对象

所以,首先必须取消序列化结果

然后您必须取消序列化结果2。诸如此类:

$res1 = unserialize($data);
if (isset($res1['result_2']){
   $res2 = unserialize($res['result_2']);
}
更新: 我不知道数据中的结果_2是否已序列化。因此,这里有两个例子:

如果结果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);
$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']);
如果结果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);
$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中的结果。

如果我理解正确,您需要将字符串(如action[]=1&action[]=2)转换为数组吗

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

这将为您提供:

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

这似乎不起作用:$res1=unserialize($\u POST);if(isset($res1['result_2']){$res2=unserialize($res1['result_2']);}print_r($res2);这篇文章的问题是,arrayjson够好吗?php有json_解码/编码。最简单的方法是首先以数组格式发送POST数据。换句话说,
ids[1]=miti_1_ti_2_colu 2&ids[2]=miti_1_ti_2_colu 1&……
等等。我认为这确实是最简单的方法,感谢使用文章id使用:
preg\u split(/&?article\\u id\[\]=“,$POST[“result\u 2”],-1,preg\u split NO\u EMPTY)