Javascript:
function serialize( mixed_val ) { // Generates a storable representation of a value
//
// + original by: Ates Goral (http://magnetiq.com)
// + adapted for IE: Ilia Kantor (http://javascript.ru)
switch (typeof(mixed_val)){
case "number":
if (isNaN(mixed_val) || !isFinite(mixed_val)){
return false;
} else{
return (Math.floor(mixed_val) == mixed_val ? "i" : "d") + ":" + mixed_val + ";";
}
case "string":
return "s:" + mixed_val.length + ":\"" + mixed_val + "\";";
case "boolean":
return "b:" + (mixed_val ? "1" : "0") + ";";
case "object":
if (mixed_val == null) {
return "N;";
} else if (mixed_val instanceof Array) {
var idxobj = { idx: -1 };
var map = []
for(var i=0; i<mixed_val.length;i++) {
idxobj.idx++;
var ser = serialize(mixed_val[i]);
if (ser) {
map.push(serialize(idxobj.idx) + ser)
}
}
return "a:" + mixed_val.length + ":{" + map.join("") + "}"
}
else {
var class_name = get_class(mixed_val);
if (class_name == undefined){
return false;
}
var props = new Array();
for (var prop in mixed_val) {
var ser = serialize(mixed_val[prop]);
if (ser) {
props.push(serialize(prop) + ser);
}
}
return "O:" + class_name.length + ":\"" + class_name + "\":" + props.length + ":{" + props.join("") + "}";
}
case "undefined":
return "N;";
}
return false;
}
Примеры:
serialize(['Kevin', 'van', 'Zonneveld']);
'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'
serialize(3.14);
'd:3.14;'
serialize("foo");
's:3:"foo";'
serialize(new Object());
'O:6:"Object":0:{}'
serialize(new (function MyClass() {}));
'O:7:"MyClass":0:{}'
serialize(new (function MyClass() { this.prop = 42 }));
'O:7:"MyClass":1:{s:4:"prop";i:42;}'
serialize(new Array());
'a:0:{}'
serialize([1, 3]);
'a:2:{i:0;i:1;i:1;i:3;}'
serialize(undefined);
'N;'
serialize(Infinity);
false;
serialize(function doit() {});
false;
|
|
|
|
|
Новости
|
Открылась регистрация на мастер-классы по профессиональному Javascript, AJAX/COMET, jQuery в городах:
- Ярославль (24-25 сентября)
- Новосибирск (3-4 октября)
- Казань (9-10 октября)
- Минск (16-17 октября)
- Днепропетровск (23-24 октября)
- Одесса (30-31 октября)
- Самара (13-14 ноября)
Более подробно - на странице мастер-классов.
Если вас интересует другой город - посмотрите здесь, выбрав "Другие города".
|
Поиск по сайту
|
|
|
Содержание
|
|
Статьи и мероприятия
|
Будьте в курсе наших последних новостей!
|
Последние обсуждения на форуме
|
| Forum |
|
Greetings!
There is a problem using this function in Internet Explorer or opera, it did not work.
I`m using this function to serialize javascript array data.
Is there any solution to work?
Thanks for your report.
Function is fixed and tested against IE7, Opera 9.5. Should also work in lower versions.
Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.