2013-05-31 41 views
3

我制作了一个JQuery列表,我想用数据库中的车牌号填满,为此,我创建了一个新的cfm文件,并在html中输出了我想要的内容,以便稍后将其转换为这样的:将ColdFusion输出中的#视为文本而不是变量?

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是一个呼叫,将页面切换到新页面,该页面将根据选择的车牌列出学生信息(如是否拥有停车许可证)。有没有办法让它将英镑符号视为文本,而不是像#license#之类的东西开始呢?有点像你会做\“在java中使用一个字符串中的引号吗?

另外,如果我从学生面前删除#,所有车牌显示在列表中,但他们不要带我对学生页面我试图达到。

+4

这就是为什么我通常使用'cfloop query =“myquery',然后在变量周围包裹'cfoutput'。一种解决方法是在'cfoutput'内部使用'##'代替'#'当你希望它只是'#' –

回答

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

floop和只是使用输出有什么区别? –

+1

如果你使用cfloop,你必须在cfoutput中包含每个变量或者在cfoutput中包含变量的内容部分),同时使用cfoutput你我更喜欢cfloop,因为它不需要你修改文本,使非编码人员更友好编辑 –

+0

ooh好吧,现在我明白了,再次感谢! –

2

使用##当你是一个<cfoutput>块内逃脱的哈希字符。

1

你需要逃避与另一个井号(##student),因为英镑符号,正如您发现的那样,英镑符号在<cfoutput>标签内有特殊含义。

相关问题