我已经创建了一个JQuery列表,我希望从数据库中填写车牌号码,为此,我创建了一个新的cfm文件并让它在html中输出我想要的内容,以便稍后我可以将其转换像这样:
setPlates.cfm
<cfquery name="q_sample" datasource="cars_live">
SELECT LICENSE FROM veh_rec
</cfquery>
<cfoutput query="q_sample" >
<li><a href='#Student'>#license#</a></li>
</cfoutput>
我调用get函数进入setPlates.cfm文件,这样我就可以将数据库中的牌照作为列表中的项目添加。代码如下:
<div class="ui-grid-solo">
<div class="ui-block-a"><br></div>
<div class="ui-block-a"><ul id="plates" data-role="listview" data-inset="true" data-filter="true" data-filter-reveal="true" data-filter-placeholder="Filter Students">
<script type="text/javascript">
$.get("setPlates.cfm")
.done(function(data) {
$("#plates").html(data);
});
</script>
<div id="plates"></div>
</ul></div>
</div><!-- /grid solo -->
事情是,当它转到那个新文件并开始读取输出时,#Student会混淆它,因为它试图将它作为数据库中的变量读取。 #Student是一个将页面更改为新页面的调用,该页面将根据选择的牌照列出学生信息(例如他们是否拥有停车许可证)。有没有办法让它将英镑符号视为文本,而不是像#certault#?有点像你会在java中使用字符串中的引号吗?
另外,如果我从学生面前删除了#,所有车牌都显示在列表中,但是他们不会带我到我想要到达的学生页面。
答案 0 :(得分:13)
如您所知,coldfusion中的#
是一个特殊字符,用于包装变量,以便在您进入cfoutput或其他特定标记内部时输出变量的内容,例如CFMAIL。如果您想在文字中使用#
,则必须在旁边放置第二个#
来逃避它。
<cfoutput>
the item## is #itemnumber#
</cfoutput>
更进一步,当你在coldfusion标签的属性中时,你可以使用""
来逃避coldfusion标签属性中字符串中的"
。
在你的情况下,我会这样做:
<cfoutput query="q_sample" >
<li><a href='##Student'>#q_sample.license#</a></li>
</cfoutput>
或者这个:
<cfloop query="q_sample" >
<li><a href='#Student'><cfoutput>#q_sample.license#</cfoutput></a></li>
</cfloop>
注意,我将q_sample
添加到变量名称中,因为这是一个很好的做法。
答案 1 :(得分:2)
当您在##
块中时,请使用<cfoutput>
来转义哈希字符。
答案 2 :(得分:1)
你需要用另一个英镑符号##student
来逃避英镑符号,因为正如你所发现的那样,英镑符号在<cfoutput>
标记中具有特殊含义。