Мне нужно отправить некоторые данные формы, используя jQuery, и значения входных полей должны быть опубликованы в формате JSON. Проблема состоит в том, что поля формы состоят из полей, которые обязательно будут такими, как: имя, фамилия и адрес электронной почты, однако поля после этого могут быть любого числа, потому что форма построена из запроса GET. Поэтому обычно я делал бы что-то вроде этого:Опубликовать данные из формы, не зная, как долго будет форма
var firstName = $('input[name="firstName"]').val();
var lastName = $('input[name="lastName"]').val();
var email = $('input[name="email"]').val();
data: JSON.stringify({
"firstName": firstName,
"lastName": lastName,
"email": email
})
Однако это не будет работать для моих оставшихся полей. Поэтому в идеале мне нужно сделать что-то вроде каждой функции или что-то, чтобы перебрать эти другие вопросы и поместить этот цикл в JSON.stringify, но я понятия не имею, как это сделать. Но тогда вы могли бы сказать, почему бы вам не просто использовать:
$('form').serialize();
просто получить все данные формы, но проблема заключается в том, что JSON должен быть в следующем формате
{
"firstName": "string",
"lastName": "string",
"email": "string",
"responses": [
{
"questionKey": 0, //this needs to be the ID of the input
"responseText": "string", //this needs to the value of the input
} //with this part of the JSON repeating for each question
]
}
Все эти дополнительные поля имеют один и тот же класс ввода, поэтому я могу легко работать с ними в jQuery. Я действительно застрял, и я был бы очень признателен за вашу помощь. Спасибо :)
UPDATE - Ниже приведен пример поля формы:
<input name="firstName" id="firstName" type="text" class="known-questions">
<input name="lastName" id="lastName" type="text" class="known-questions">
<input name="email" id="email" type="email" class="known-questions">
<input name="45435345345" id="45435345345" type="text" class="unknown-questions">
<input name="43443539864" id="43443539864" type="text" class="unknown-questions">
<input name="43344243529" id="43344243529" type="text" class="unknown-questions"> //there could be any number of these 'unknown-questions' class inputs
Почему вы не используете массив объектов? –
Знание созданной структуры html поможет много. Затем не сложно перебирать элементы и добавлять свойства/значения на основе имен или других соответствующих атрибутов. Для известных полей можно упростить до массива этих имен и закодировать этот массив, чтобы установить свойства/значения, не записывая все это вручную. – charlietfl
@ SimonSchüpbach не ожидал результатов для ответов массива объектов? OP пытается выяснить, как создать эти объекты. – charlietfl