У меня есть форма, которую я хотел бы представить как JSON через jQuery AJAX, чтобы я мог прочитать ее во временную таблицу на стороне сервера, используя собственные методы моего языка программирования (OpenEdge using READ-JSON). Пример JSON моя форма должна произвести это:Создайте пользовательскую строку JSON из формы
{"ttOrder": [
{
"cProduct": "prod01",
"iQty": 123
},
{
"cProduct": "prod02",
"iQty": 456
}
]}
Моя форма состоит из таблицы, содержащей строки информации о продукте, код продукта, описание и т.д., и поле ввода количества, например,
<input id="prod01" name="prod01" value="0">
От поиска вокруг Stack Overflow я нашел несколько предложений, которые выглядели как они могли бы помочь, как я думаю, что мне нужна сериализация формы:
(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 использовать
...
data: JSON.stringify(obj),
...
Однако, это дает следующее:
{"ttOrder": [
{
"prod01": "123",
"prod02": "456"
}
]}
Я думаю, что весь приведенный выше код создает строку JSON, содержащую имя ввода и значение в качестве пары значений &, но у меня нет ноу-хау, чтобы изменить код, чтобы получить меня, что я требуют.
Я думаю, что я пытаюсь создать массив объектов, где имя массива всегда равно ttOrder (сопоставляется с моим именем temp-table) (всегда cProduct - сопоставляет имя моего имени temp-таблицы) со значением имени входа, а вторая запись объекта - это количество (всегда iQty - отображает значение поля temp-table).
Извините за неверную терминологию, которую я использую.
Спасибо.
Блестящий, и спасибо за такое быстрое решение. Он почти работает, но количество превращается в строку, то есть '{" cProduct ":" 01 "," iQty ":" 1 "}', а не '{" cProduct ":" 01 "," iQty ": 1} '. Есть ли что-нибудь, что я могу сделать по этому поводу? –
Добавление parseInt вокруг n ['value'] должно выполнить трюк: json ['iQty'] = parseInt (n ['value']); –
Да, он сделал это, теперь он отлично работает. Большое спасибо Брайан! –