Как опубликовать сложную HTML-форму как JSON? - PullRequest
13 голосов
/ 02 марта 2011

У меня очень сложная форма на веб-странице. Пользователь фактически создает сложный объект. Пользовательский интерфейс обрабатывается с использованием jQuery (показ, скрытие разделов, дублирование и удаление подформ, ...).

Простое размещение формы после отправки пользователем, хотя и возможно, не кажется лучшим решением: было бы сложно составить уникальные имена для полей (могут быть массивы объектов) и декодировать весь материал на стороне сервера.

Полагаю, мне лучше опубликовать JSON-представление объекта. Как я могу это сделать?

Я не пытаюсь сделать вызов ajax. Я хочу отправить форму, но используя JSON вместо обычной формы application / x-www-form-urlencoded.

FWIW, серверная часть - ASP.NET MVC.

ТИА,

Ответы [ 4 ]

3 голосов
/ 02 марта 2011

Сериализация в JSON с использованием скрипта ...

Хотя в этом ответе используется Ajax, вы можете вместо этого записать сериализованную строку во вход [type = hidden] в вашей форме

Сериализация в JSON в jQuery

1 голос
/ 09 сентября 2011

Если вы используете jquery, вы можете посмотреть на эти две функции .serialize () и .serializeArray ()

Эти функции помогут вам получить данные формы, без необходимости выполнять итерацию вручную.

1 голос
/ 02 марта 2011

Вы можете попробовать это:

$("form").submit(function()
{
    //Checking data here:
    $("input").each(function(i, obj)
    {
    });
    alert($(this).serialize());
    alert(toJSON($(this).serializeArray()));
    //return false;
});

function toJSON(obj)
{
    var json = '({';
    $.each(obj, function(k,v){
    var q = typeof v == 'string' ? ~v.indexOf("'") ? '"' : "'" : '';
    if (typeof v == 'object')
    v = toJSON(v).slice(0,-1).substr(1);
    json+= k + ':'+ q + v + q + ',';
    });
    return json.slice(0,-1)+'})';
};

Моя скрипка: http://jsfiddle.net/Achilleterzo/6Zj6n/

0 голосов
/ 03 марта 2011

Используйте плагин формы jquery для отправки формы через AJAX.Для дублирующих имен полей по умолчанию обычно добавляется [] к имени - большинство серверных языков затем создают массив, содержащий все переданные значения.В зависимости от языка это может произойти и без [], но я уверен, что MSDN поможет вам, так как вы используете ASP.NET для своего бэкэнда.

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