我想通过使用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中的数组?
答案 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
)