Создать пользовательскую строку JSON из формы - PullRequest
2 голосов
/ 01 февраля 2012

У меня есть форма, которую я хотел бы отправить как JSON через jQuery AJAX, чтобы я мог прочитать ее во временную таблицу на стороне сервера, используя один из собственных методов моего языка программирования (OpenEdge с использованием READ-JSON).Пример JSON, который необходимо создать для моей формы:

{"ttOrder": [
  {
    "cProduct": "prod01",
    "iQty": 123
  },
  {
    "cProduct": "prod02",
    "iQty": 456
  }
]}

Моя форма состоит из таблицы, содержащей строки информации о продукте, код продукта, описание и т. Д., А также поле ввода количества, например,

<input id="prod01" name="prod01" value="0">

Из поиска по переполнению стека я нашел пару предложений, которые выглядели так, как будто они могут помочь, так как я думаю, что мне нужно сериализовать форму:

(function( $ ){
    $.fn.serializeJSON=function() {
        var json = {};
        jQuery.map($(this).serializeArray(), function(n, i){
            json[n['name']] = n['value'];
        });
        return json;
    };
})( jQuery );

var obj = {"ttOrder": [$('#prodform').serializeJSON() ]};

И затем в $.ajax call use

...
data: JSON.stringify(obj),
...

Тем не менее, это дает следующее:

{"ttOrder": [
  {
    "prod01": "123",
    "prod02": "456"
  }
]}

Я думаю, что весь код выше создает строку JSON, состоящую из имени и значения ввода в видепара ключ-значение, но у меня нет ноу-хау, как изменить код, чтобы получить то, что мне нужно.

Я думаю, что я пытаюсь добиться, чтобы иметь массив объектовгде имя массива всегда ttOrder (сопоставляется с именем моей временной таблицы), первая запись объекта - это код продукта (всегда cProduct - сопоставляется с именем поля моей временной таблицы) со значением имени ввода,и секПервая запись объекта - это количество (всегда iQty - соответствует значению моего поля временной таблицы).

Пожалуйста, извините за неправильную терминологию, которую я использую.

Спасибо.

1 Ответ

3 голосов
/ 01 февраля 2012

Первый пример близок. Это должно работать здесь:

(function( $ ){
$.fn.serializeJSON=function() {
    return jQuery.map($(this).serializeArray(), function(i, n){
        var json = {};
        json['cProduct'] = n['name'];
        json['iQty'] = parseInt(n['value']);

        return json;

    }).get();
};
})( jQuery );

var obj = {"ttOrder": $('#prodform').serializeJSON()};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...