JQuery сериализовать в массив PHP - PullRequest
1 голос
/ 16 декабря 2011

Я хочу отправить результат сортировки HTML на сервер, выполнив сериализацию с помощью jQuery.Это работает, если я только отправляю результат:

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 ]

1 голос
/ 16 декабря 2011

Если я правильно понял, вам нужно преобразовать строку, например 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
)
1 голос
/ 16 декабря 2011

Как я понял, "результат" также является сериализованным объектом.

Таким образом, вам сначала нужно десериализовать результат.

Затем вы должны десериализовать результат2.Примерно так:

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

Обновлено:

Я не знаю, если ваш 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);

Если результат_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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...