Comments 46
Полезная инфа — спс
В PrototypeJS/MooTools есть проверенный временем Form#serialize. Проще его импортнуть, чем свои велосипеды писать.
в jquery тоже
Не знаю, с MooTools и Prototype сталкивался, но достаточно давно, и сейчас проверил — нет там такого функционала.
Ближе всего Prototype — $('testForm').serialize(true), но он спотыкается на массивах объектов (просто массивы обрабатывает нормально).
В mootools получилось что то похожее только через:
var hm = $('testForm').toQueryString();
hm = '{"'+hm+'"}';
hm = hm.replace(/&/g, '","');
hm = hm.replace(/=/g, '":"');
var jsn = JSON.decode(hm);
и то, там тоже самое, что и в jQuery.serializeArray — никаких распихиваний значений по свойствам объектов.
Если знаете — напишите, добавлю в топик.
Ближе всего Prototype — $('testForm').serialize(true), но он спотыкается на массивах объектов (просто массивы обрабатывает нормально).
В mootools получилось что то похожее только через:
var hm = $('testForm').toQueryString();
hm = '{"'+hm+'"}';
hm = hm.replace(/&/g, '","');
hm = hm.replace(/=/g, '":"');
var jsn = JSON.decode(hm);
и то, там тоже самое, что и в jQuery.serializeArray — никаких распихиваний значений по свойствам объектов.
Если знаете — напишите, добавлю в топик.
Не совсем понятно, почему только в json формате.
GET/POST формат key=value&key2=value2 очень даже нужен.
GET/POST формат key=value&key2=value2 очень даже нужен.
Это не JSON если что. Это просто яваскриптовый Object с данными из формы. А в строку его превратить можно многими способами (в том числе и так).
А что такое json, если это не Javascript object? :)
JSON — некое строковое представление данных, т.е. синтаксис/формат. Кстати, там есть отличия от синтаксиса Javascript, например, строки должны быть обрамлены только двойными кавычками, и наименования полей обязательно строки (http://json.org). Javascript object — это некая область памяти, содержащая данные. Вроде разные вещи?
JSON — Javascript Object Notation. Без сомнения это текстовое представление данных, которое eval-ом превращается в обычный яваскриптовый объект. В этом вся соль и кровь этого формата. Обрамление в кавычки — костыль, который позволяет не вводить сложную логику в вывод, чтобы не было синтаксических ошибок, когда значение пустое (… name: ,).
Либо вы занимаетесь словоблудием, либо реально не понимаете сути. Надеюсь первое, и вы просто решили меня постебать. :)
Либо вы занимаетесь словоблудием, либо реально не понимаете сути. Надеюсь первое, и вы просто решили меня постебать. :)
Я как раз понимаю суть — разницу между объектом и его представлением. Очень надеюсь, что вы не отождествляете эти понятия, а потому сами сможете ответить на вопрос «почему Javascript object ≠ JSON».
Или по Маяковскому, «мы говорим Ленин, подразумеваем — партия, мы говорим партия, подразумеваем — Ленин»?
Вкратце:
Разница ведь есть?
Или по Маяковскому, «мы говорим Ленин, подразумеваем — партия, мы говорим партия, подразумеваем — Ленин»?
Вкратце:
- // JSON
- var json = '{ "foo" : "bar" }';
-
- // Object
- var obj = {
- "foo" : "bar"
- };
-
- console.log( typeof json ); // string
- console.log( typeof obj ); // object
* This source code was highlighted with Source Code Highlighter.
Разница ведь есть?
UFO just landed and posted this here
В jQuery есть метод «serializeArray», то же самое делает
Я так понимаю, что используя метод автора, можно сериализовать вложенные формы. Ну и вообще собирать данные в удобную для использования структуру.
а разве вложенные формы это не смерть осликова?
вложенные формы разве можно делать?
Ну имитировать то можно. Иногда не обойтись же.
serializeArray не умеет создавать массивы из инпутов: name=«pictures[]»
В топик добавил. В кратце — serializeArray делает не то же самое.
может лучше присмотреться к этому? habrahabr.ru/blogs/webstandards/92300/
name=«person_name_first» value=«John»
name=«person_favFood_» value=«steak»
name=«person_friends_0_name» value=«Smith Agent»
name=«person_name_first» value=«John»
name=«person_favFood_» value=«steak»
name=«person_friends_0_name» value=«Smith Agent»
Не лучше (ну, в моем случае). У меня эти данные уйдут на сервер в виде XML, например, и в случае положительного ответа еще и обновят подгруженный ранее XML, из которого с помощью XSL-трансформации получится HTML, отображаемый пользователю =)
зачем посылать-то xml? o_0"
Таки не надо круглых глаз. Условия такие. Да и почему нет? Это порой удобнее REST'ов бывает, например, если есть MS SQL 2005+ с готовыми эндпойнтами, которые принимают данные в виде XML.
ИМХО использование точек в имени инпутов из вери вери бед идея.
обоснуй
на одном пхп, свет не сошелся клином.
а точка, это все таки служебный символ во многих языках программирования и не все предусматривают доступ к формам через конструкции типа («name»)[«name»]
использования _ самый оптимальный вариант.
На свидку, перволе что пришло в голову это лебедевский парсер+)., там достаточно простой доступ к пост и гет данным через класс форм, например $form: имя_поля. Далее можно использовать всякие методы типа $form: имя_поля.pos и бла бла.
а точка, это все таки служебный символ во многих языках программирования и не все предусматривают доступ к формам через конструкции типа («name»)[«name»]
использования _ самый оптимальный вариант.
На свидку, перволе что пришло в голову это лебедевский парсер+)., там достаточно простой доступ к пост и гет данным через класс форм, например $form: имя_поля. Далее можно использовать всякие методы типа $form: имя_поля.pos и бла бла.
Как-то столкнулся с проблемой сериализации в json (и десериализации обратно) вложенных динамических форм. Тоже писал ненормальный рекурсивный велосипед, но нормального решения в сети так и не нашел. Все мечтаю довести до ума.
www.json.org/js.html — тут есть сериализатор JS объектов в JSON
Или проблема именно в создании объекта из формы?
Или проблема именно в создании объекта из формы?
Имхо, рекурсия тут совсем не зло. Наиболее понятный способ обхода, вызывается относительно редко, и объем данных тоже не огромный.
Спасибо, уже начал использовать в своем проекте.
Sign up to leave a comment.
Получаем Object из формы