阻止 YES/NO 值转换为 true/false Coldfusion 9?
Prevent YES/NO values to convert to true/false Coldfusion 9?
我有一个表单,用户必须 select 列表中的值。列表由管理员创建。在其中一个列表中,有一个选项供用户选择 NO
代表某些保留代码的值。类似于 Not Occupied
。所以我使用 JQuery 和 AJAX 与服务器通信。在后端,我在生产服务器上使用 ColdFusion 9。因此,为了恢复 NO
,我必须使用 space 将其转换为 'NO '
。如果我不执行此功能,客户端将 return false
值。这是我的代码转换示例:
<cfset convertYesNo = {
YES : "YES ",
NO : "NO "
}>
<cfset qryRecs['value'] = URLEncodedFormat(structKeyExists(convertYesNo, myInfo[CurrentRow]) ? convertYesNo[myInfo[CurrentRow]] : myInfo[CurrentRow])>
上面的代码在我的开发网站上运行良好。唯一的区别是在开发中我们有 ColdFusion 10 而在现场我们有 ColdFusion 9。所以一旦我将代码移动到现场我开始收到错误消息:
ColdFusion was looking at the following text:<p>{</p><p>The CFML compiler was processing:<ul><li>A cfset tag beginning on line 1071, column 18.<li>A cfset tag beginning on line 1071, column 18.
<pre>1069 : }>
1070 :
<b>1071 : <cfset convertYesNo = {</b>
1072 : "Yes" : "Yes ",
1073 : "No" : "No "
</pre>
我曾尝试在“是”和“否”两边加上引号,但这没有帮助。如果有人知道如何解决这个问题,请告诉我。提前致谢!
我认为 CF9 的结构符号不支持这种语法。尝试以下操作(=
而不是 :
分隔键值对)。
<cfset convertYesNo = {
YES = "YES ",
NO = "NO "
}>
<cfset qryRecs['value'] = URLEncodedFormat(structKeyExists(convertYesNo, myInfo[CurrentRow]) ? convertYesNo[myInfo[CurrentRow]] : myInfo[CurrentRow])>
结构(哈希表)非常擅长快速查找键,但这里只有 2 个键,因此更有效的构造是(cfscript 语法示例):
qryRecs['value'] = URLEncodedFormat(
listFindNoCase("YES,NO", myInfo[CurrentRow]) ?
uCase(myInfo[CurrentRow]) & " "
:
myInfo[CurrentRow]
);
尽管为了更好的可读性和代码维护,您应该考虑将其分解为多个语句:
value = myInfo[CurrentRow];
if (value == "YES" || value == "NO") // use EQ operator in CFML syntax
value = uCase(value) & " ";
qryRecs['value'] = URLEncodedFormat(value);
我有一个表单,用户必须 select 列表中的值。列表由管理员创建。在其中一个列表中,有一个选项供用户选择 NO
代表某些保留代码的值。类似于 Not Occupied
。所以我使用 JQuery 和 AJAX 与服务器通信。在后端,我在生产服务器上使用 ColdFusion 9。因此,为了恢复 NO
,我必须使用 space 将其转换为 'NO '
。如果我不执行此功能,客户端将 return false
值。这是我的代码转换示例:
<cfset convertYesNo = {
YES : "YES ",
NO : "NO "
}>
<cfset qryRecs['value'] = URLEncodedFormat(structKeyExists(convertYesNo, myInfo[CurrentRow]) ? convertYesNo[myInfo[CurrentRow]] : myInfo[CurrentRow])>
上面的代码在我的开发网站上运行良好。唯一的区别是在开发中我们有 ColdFusion 10 而在现场我们有 ColdFusion 9。所以一旦我将代码移动到现场我开始收到错误消息:
ColdFusion was looking at the following text:<p>{</p><p>The CFML compiler was processing:<ul><li>A cfset tag beginning on line 1071, column 18.<li>A cfset tag beginning on line 1071, column 18.
<pre>1069 : }>
1070 :
<b>1071 : <cfset convertYesNo = {</b>
1072 : "Yes" : "Yes ",
1073 : "No" : "No "
</pre>
我曾尝试在“是”和“否”两边加上引号,但这没有帮助。如果有人知道如何解决这个问题,请告诉我。提前致谢!
我认为 CF9 的结构符号不支持这种语法。尝试以下操作(=
而不是 :
分隔键值对)。
<cfset convertYesNo = {
YES = "YES ",
NO = "NO "
}>
<cfset qryRecs['value'] = URLEncodedFormat(structKeyExists(convertYesNo, myInfo[CurrentRow]) ? convertYesNo[myInfo[CurrentRow]] : myInfo[CurrentRow])>
结构(哈希表)非常擅长快速查找键,但这里只有 2 个键,因此更有效的构造是(cfscript 语法示例):
qryRecs['value'] = URLEncodedFormat(
listFindNoCase("YES,NO", myInfo[CurrentRow]) ?
uCase(myInfo[CurrentRow]) & " "
:
myInfo[CurrentRow]
);
尽管为了更好的可读性和代码维护,您应该考虑将其分解为多个语句:
value = myInfo[CurrentRow];
if (value == "YES" || value == "NO") // use EQ operator in CFML syntax
value = uCase(value) & " ";
qryRecs['value'] = URLEncodedFormat(value);