В качестве формы каждое поле является частью области FORM
по умолчанию. Эта область представляет собой простую структуру (т. Е. FORM = {question_id: value, response_id: value}
), из которой вы можете легко ссылаться на каждый элемент: (для вывода) <cfoutput>#FORM.question_id#</cfoutput>
.
Итак, скажем, у вас было 10 вопросов, и что всегда будет ответ. Во-первых, у вас есть поле скрытой формы для каждого вопроса:
<input type="hidden" name="questionId_01" value="01" />
<input type="hidden" name="questionId_02" value="02" />
Обратите внимание, что каждое поле имеет другое имя. Это необходимо для получения уникальной ссылки на каждое поле. Затем вы создаете соответствующие поля ввода для каждого вопроса. Скажем, это были вопросы с несколькими вариантами выбора, и вы использовали радиокнопки. Вы бы создавать поля с одинаковыми именами, но значения выбора:
<input type="radio" name="responseId_01" value="a" />
<input type="radio" name="responseId_01" value="b" />
<input type="radio" name="responseId_01" value="c" />
<input type="radio" name="responseId_02" value="a" />
<input type="radio" name="responseId_02" value="b" />
<input type="radio" name="responseId_02" value="c" />
Отправка формы будет проходить их как простые пары имя/значение сервера. Я вижу тег jQuery, прикрепленный к вашему вопросу (хотя вы его не упоминаете), поэтому я предполагаю, что вы делаете представление Ajax. Большинство людей используют $.serializeArray()
, чтобы поместить свои данные формы в формат данных ajax. Это простой способ справиться с этим.
$('myForm').submit(function(e){
e.preventDefault();
$.ajax({
url: 'myProcessor.cfc?method=processForm&returnformat=JSON',
data: $(this).serializeArray(),
success: callbackFunctionName
});
});
Вывесит следующие Params:
questionId_01 01
questionId_02 02
responseId_01 b
responseId_02 a
method processForm
returnformat JSON
Таким образом, вы не имеете массив структур, которые вы ищете на стороне сервера еще. Вы можете сделать некоторые на стороне сервера обработки, чтобы сделать ваши массивы, обернув по ARGUMENTS
сферы:
<cfscript>
LOCAL.processArr = ArrayNew(1);
for (LOCAL.i in ARGUMENTS){
if (FindNoCase('questionId',LOCAL.i)){
LOCAL.tmpArr = ListToArray(LOCAL.i,'_'); // get the Id to find response entity
LOCAL.tmpStr = {questionId = ARGUMENTS[LOCAL.i], responseId = ARGUMENTS['responseId_' & LOCAL.tmpArr[2]]}; // CF arrays start at 1
ArrayAppend(LOCAL.processArr, Duplicate(LOCAL.tmpStr));
}
}
</cfscript>
Теперь у вас есть массив структур, вы искали. Затем вы можете объединить массив и выполнить свои вставки.
Что у вас есть? – KobbyPemson