serialize-unserialize js php прошу помощи
Здравствуйте
Столкнулся с проблемой: есть такой скрипт.
<script type='text/javascript'>
function doAddContainer() {
obj = {
name: "tile002",
thumbnail: "images/widget_scroll.png",
content: "tile001",
url: "tiles/blank.php",
size: "4x2",
theme: "orange",
link: ""
};
tile = {
size: "4",
theme: "container2",
name: "container2",
tiles: obj
};
var cc = document.getElementById('plugin_textarea_string');
tiles = cc.value;
tile_containers = unserialize(tiles);
tile_containers[tile_containers.length] = tile;
document.getElementById('plugin_textarea_string').value = serialize(tile_containers);
}
</script>
у него на входе следущая строка из php: a:1:{i:0;a:4:{s:4:"size";s:1:"4";s:5:"theme";s:10: "container1";s:4:"name";s:10:"container1";s:5:"til es";a:1:{i:0;a:7:{s:4:"name";s:7:"tile001";s:9:"th umbnail";s:24:"images/widget_scroll.png";s:7:"content";s:7:"tile001";s:3 :"url";s:15:"tiles/blank.php";s:4:"size";s:3:"4x2";s:5:"theme";s:6:"o range";s:4:"link";s:0:"";}}}} скрипт должен добавить в составной массив ещё один объект и отправить его в php, соорудив вот такую "правильную" строку: a:2:{i:0;a:4:{s:4:"size";s:1:"4";s:5:"theme";s:10: "container1";s:4:"name";s:10:"container1";s:5:"til es";a:1:{i:0;a:7:{s:4:"name";s:7:"tile001";s:9:"th umbnail";s:24:"images/widget_scroll.png";s:7:"content";s:7:"tile001";s:3 :"url";s:15:"tiles/blank.php";s:4:"size";s:3:"4x2";s:5:"theme";s:6:"o range";s:4:"link";s:0:"";}}}i:1;a:4:{s:4:"size";s: 1:"4";s:5:"theme";s:10:"container2";s:4:"name";s:1 0:"container2";s:5:"tiles";a:1:{i:0;a:7:{s:4:"name ";s:7:"tile002";s:9:"thumbnail";s:24:"images/widget_scroll.png";s:7:"content";s:7:"tile001";s:3 :"url";s:15:"tiles/blank.php";s:4:"size";s:3:"4x2";s:5:"theme";s:6:"o range";s:4:"link";s:0:"";}}}} но получается вот такая "неправильная": a:2:{i:0;a:4:{s:4:"size";s:1:"4";s:5:"theme";s:10: "container1";s:4:"name";s:10:"container1";s:5:"til es";a:1:{i:0;a:7:{s:4:"name";s:7:"tile001";s:9:"th umbnail";s:24:"images/widget_scroll.png";s:7:"content";s:7:"tile001";s:3 :"url";s:15:"tiles/blank.php";s:4:"size";s:3:"4x2";s:5:"theme";s:6:"o range";s:4:"link";s:0:"";}}}i:1;a:4:{s:4:"size";s: 1:"4";s:5:"theme";s:10:"container2";s:4:"name";s:1 0:"container2";s:5:"tiles";a:7:{s:4:"name";s:7:"ti le002";s:9:"thumbnail";s:24:"images/widget_scroll.png";s:7:"content";s:7:"tile001";s:3 :"url";s:15:"tiles/blank.php";s:4:"size";s:3:"4x2";s:5:"theme";s:6:"o range";s:4:"link";s:0:"";}}} функции serialize и unserialize работают корректно. убирал эту строку tile_containers[tile_containers.length] = tile; и давал на вход скрипта от php "правильную" строку. После парсинга в обе стороны она остаётся такой же. Собственно вопрос: как всё-таки получить при работе скрипта "правильную" |
В JS нет функций serialize/unserialize! Ты спутал с PHP. В JS запросто сериализуются простые объекты, массивы и примитивы через JSON.
|
я ничего не спутал. это пользовательские функции. если надо - могу кинуть код. но они работают корректно
|
Цитата:
|
парсят в соответствующих форматах аналогичных функций php. Если перебираться на json - это неделя гемора править во всех подобных местах + менять везде где уже есть формат php на формат json в базе
|
Проблема решена:
<script type='text/javascript'>
function doAddContainer() {
obj = {
name: "tile002",
thumbnail: "images/widget_scroll.png",
content: "tile001",
url: "tiles/blank.php",
size: "4x2",
theme: "orange",
link: ""
};
objobj = { obj: obj };
tile = {
size: "4",
theme: "container2",
name: "container2",
tiles: objobj
};
var cc = document.getElementById('plugin_textarea_string');
tiles = cc.value;
tile_containers = unserialize(tiles);
tile_containers[tile_containers.length] = tile;
document.getElementById('plugin_textarea_string').value = serialize(tile_containers);
}
</script>
|
| Часовой пояс GMT +3, время: 01:15. |