我正在构建一个包含一组问题和答案的应用程序。用户会回答每个问题,最后点击“保存”按钮。在Coldfusion中插入结构数组
我希望将问题和响应的组合存储为结构数组。数组中的每个条目都是question_id和response_id的结构。
一旦用户点击'保存'按钮,我需要将条目保存在数据库中。
- 如何将结构数组传递给cfc?
- 我将如何处理结构数组以将其插入到数据库中?
请帮忙。
我正在构建一个包含一组问题和答案的应用程序。用户会回答每个问题,最后点击“保存”按钮。在Coldfusion中插入结构数组
我希望将问题和响应的组合存储为结构数组。数组中的每个条目都是question_id和response_id的结构。
一旦用户点击'保存'按钮,我需要将条目保存在数据库中。
请帮忙。
作为一种形式,每个字段在缺省情况下提交时都是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>
现在,你有你要找的结构的阵列。然后您可以循环数组并执行插入操作。
嗯,编辑器不会保留代码格式? – 2011-01-12 14:46:17
到目前为止你有什么? – KobbyPemson 2011-01-07 23:08:54