我在写别人写的代码。据我所知,这是不正确的,但我没有看到任何错误,因此,现在我不确定是否有什么变化,从版本8。
代码如下&我想知道您是否可以在Javascript代码中使用CFML
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
<cfif url.new = true>var x = 5 </cfif>
</script>发布于 2015-01-05 19:46:14
您不能在JavaScript中使用CFML,因为ColdFusion在服务器上运行,JavaScript在客户机上运行。但是,您需要考虑CFML是如何工作的,CFML代码是在服务器上处理的,然后输出传递给客户端。因此,在您的例子中,您提供的示例是有效的。CFML将在服务器上处理,两个输出中的一个将生成并传递回客户端。
注意:您还没有包含所有的代码,所以我假设在此之前还有其他代码来检查url.new变量的存在。否则,如果new参数未在URL中传递,则将引发一个错误,即该变量不存在。
如果URL不包含名为“new”的参数;http://www.yourdomain.com/somepage
或者“新”论点确实存在,但它的价值不被认为是“真”;http://www.yourdomain.com/somepage?new=false
然后输出将是:
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
</script>注意,生成的JavaScript中"x“的值为2。
如果URL确实包含一个名为"new“的参数,并且它的值被认为是"true";http://www.yourdomain.com/somepage?new=true
然后输出将是:
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
var x = 5
</script>请注意,生成的JavaScript中"x“的值为5,但是行尾也缺少一个分号,因此您的示例可能会抛出一个JavaScript错误。
请注意,我还提到了“如果该值被认为是真或假”。在ColdFusion中,布尔表达式True、非零数字和字符串"Yes“、”1 are“、"True”是等价的;False,0和字符串"No“、"0”和"False“是等价的。布尔值不区分大小写.例如,True、TRUE和true是等价的。因此,在您的示例中,http://www.yourdomain.com/somepage?new=1也被认为是正确的。
发布于 2015-01-05 19:47:11
嗯:你并没有像你建议的那样使用“带有Javascript代码的CFML”。您拥有的是一些文本,而CFML恰好(有条件地)生成其他文本。
它生成的文本将包括:
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
var x = 5
</script>或
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
</script>取决于值URL.new。无论哪种方式,都只是CFML服务器有任何输入的时候的文本。
然后将该文本发送回web服务器,web服务器将其发送回请求它的浏览器。然后浏览器将文本解释为HTML,在HTML中有一些文本被告知作为JavaScript来处理。它也是这样做的(把它当作JavaScript,并运行它)。
但这与CFML服务器有任何关系已经很久了。所有CFML服务器都会大量输出文本。
这可能有助于您理解CFML服务器的请求/响应生命周期:"CFML请求/响应过程“。
发布于 2015-01-05 23:27:21
在这里,我可以看到您的代码有几个错误--这就是我在这里所要做的:
<script>
var x = 2;
<cfif structKeyExists(URL, "new") AND URL.new IS true>x = 5;</cfif>
</script>您应该得到的代码是:
<script>
var x = 2;
x = 5;
</script>除此之外,你想做的事也是有道理的。我的工作中经常有一个CF > JavaScript 'bridge‘--只要您理解其中一个在编译时运行,然后页面被传递给web服务器,而另一个在运行时在客户端机器上运行。
https://stackoverflow.com/questions/27785565
复制相似问题