Недавно у меня возникла проблема с кодированием, которая потребовала от меня (по необъяснимым причинам) только одной строки базы данных при сохранении ввода формы. Мне нужно было хранить ответы пользователей и введенные пользователем категории ответов в БД, и я мог использовать только столбцы ниже.

Кроме того, пользователь мог ввести произвольное количество категорий и ответов, и все они должны были быть добавлены в DOM с помощью jQuery по щелчку.
Ввод для каждого ответа будет в следующем формате:
User-Entered Category — Answer 1 — Answer 2 Another User-entered Category — Answer 1 — Answer 2 — Answer 3 A third user-entered category — Answer 1 — Answer 2
Я решил, что мне нужно сериализовать ответы в строку JSON, чтобы все они могли храниться в столбце ответов. К счастью, какая-то добрая душа уже написала JS, чтобы помочь мне легко выполнить это в jQuery. Проверьте Github для jQuery Serialize Object. Отлично, поэтому все, что мне нужно было сделать, это дать каждой категории уникальный идентификатор, и у меня была форма JSON, которую я хотел.
Вот мой шаблон ответа:
const newAnswer = $(` <div class=”answer-template”> <input type=”text” class=”form-control” name=”responseGroup0[answers][0]” placeholder=”Enter your insight/step/answer here…”> </div>`)
А вот как я увеличивал счетчик каждый раз, когда добавлялся новый ответ:
let answerCounter = 0;
answerCloneButton.click((event) => {
answerCounter++;
// jQuery omitted
answerClone.find(':text').attr('name', 'responseGroup' + stacticCounter + '[answers][' + answerCounter + ']');
}
Затем, когда форма была нажата, мне нужно было только вызвать метод serializeJSON():
$(“#submitAnswers”).click(function () {
const answers = $(“form”).serializeJSON()
}
Что дало мне форму, которую я хотел:
answers = {
“responseGroup0”:
{“categoryName”:”Pre ordering”,
“answers”:[“Answer 1”,”Answer 2"]},
“responseGroup1”:
{“categoryName”:”Post ordering”,”answers”:[“Answer 1”,”Answer 2",”Answer 3"]},
“responseGroup2”:
{“categoryName”:”Returning”,”answers”:[“BLAH”,”Answer Blah”]}
}
Хотя это создает краткую базу данных, кажется менее чем оптимальным выполнять всю эту предварительную обработку для внесения данных в базу данных. Увы, не мой призыв!