Javascript中的CFML
我正在编写其他人编写的代码。据我所知,这是不正确的,但我没有看到任何错误,所以现在我不确定是否有什么改变,因为版本8 代码如下&我想知道是否可以将CFML与Javascript代码一起使用Javascript中的CFML,javascript,coldfusion,cfml,Javascript,Coldfusion,Cfml,我正在编写其他人编写的代码。据我所知,这是不正确的,但我没有看到任何错误,所以现在我不确定是否有什么改变,因为版本8 代码如下&我想知道是否可以将CFML与Javascript代码一起使用 <script language="JavaScript" type="text/JavaScript" > var x = 2; <cfif url.new = true>var x = 5 </cfif> </script> var x
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
<cfif url.new = true>var x = 5 </cfif>
</script>
var x=2;
变量x=5
不能在JavaScript本身中使用CFML,因为ColdFusion在服务器上运行,JavaScript在客户端运行。但是,您需要考虑CFML如何工作,CFML代码在服务器上进行处理,然后将输出传递给客户端。因此,在您的案例中,您提供的示例是有效的。CFML将在服务器上进行处理,并生成两个输出中的一个,并将其传递回客户端
注意:您尚未包含所有代码,因此我假设在此之前还有其他代码检查url.new
变量的存在。否则,如果未在URL中传递new
参数,则会抛出一个错误,说明变量不存在
如果URL不包含名为“new”的参数或者“new”参数确实存在,但其值不被视为“true”
那么输出将是:
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
</script>
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
var x = 5
</script>
var x=2;
请注意,生成的JavaScript中的“x”值将为2
如果URL确实包含名为“new”的参数,并且其值被视为“true”那么输出将是:
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
</script>
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
var x = 5
</script>
var x=2;
变量x=5
请注意,生成的JavaScript中的“x”值将为5,但是在该行的末尾还缺少分号,因此您的示例可能会抛出JavaScript错误
请注意,我还提到“如果该值被认为是真的或假的”。在ColdFusion中,布尔表达式、True、非零数和字符串“Yes”、“1 |”、“True”是等价的;和False、0,字符串“No”、“0”和“False”是等价的。布尔求值不区分大小写。例如,True、True和True是等效的。因此,在您的示例中,这也被认为是正确的。好吧:您并没有按照您建议的方式真正使用“CFML with Javascript代码”。您拥有的是一些文本,而CFML恰好(有条件地)生成了一些其他文本 它生成的文本将是以下内容之一:
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
var x = 5
</script>
var x=2;
变量x=5
或
var x=2;
取决于值URL.new
。无论哪种方式,在CFML服务器有任何输入时,都只是文本
然后,该文本被发送回web服务器,web服务器将其发送回请求它的浏览器。然后浏览器将文本解释为HTML,在HTML中有一些文本被告知作为JavaScript处理。确实如此(将其视为JavaScript并运行)
但这与CFML服务器无关已经很久了。所有的CFML服务器都会大量输出文本
这可能有助于您理解与CFML服务器相对应的请求/响应生命周期:“我可以看到您的代码在这里有一些错误-这是我将在这里看到的:
<script>
var x = 2;
<cfif structKeyExists(URL, "new") AND URL.new IS true>x = 5;</cfif>
</script>
var x=2;
x=5;
<script>
var x = 2;
x = 5;
</script>
var x=2;
x=5;
除此之外,你想做的是正确的。我的工作中经常会有一个CF>JavaScript“桥”——只要你知道一个是在编译时运行的,在页面传递到web服务器之前,另一个是在运行时在客户机上运行的。对解释应用程序服务器范例的博客文章链接
var x=5
的语法错误,我投了赞成票。使用var x=5