首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript中的CFML

Javascript中的CFML
EN

Stack Overflow用户
提问于 2015-01-05 18:25:09
回答 3查看 570关注 0票数 2

我在写别人写的代码。据我所知,这是不正确的,但我没有看到任何错误,因此,现在我不确定是否有什么变化,从版本8。

代码如下&我想知道您是否可以在Javascript代码中使用CFML

代码语言:javascript
复制
<script language="JavaScript" type="text/JavaScript" > 
    var x = 2;
    <cfif url.new = true>var x = 5 </cfif>
</script>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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

然后输出将是:

代码语言:javascript
复制
<script language="JavaScript" type="text/JavaScript" > 
    var x = 2;
</script>

注意,生成的JavaScript中"x“的值为2。

如果URL确实包含一个名为"new“的参数,并且它的值被认为是"true";http://www.yourdomain.com/somepage?new=true

然后输出将是:

代码语言:javascript
复制
<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也被认为是正确的。

票数 3
EN

Stack Overflow用户

发布于 2015-01-05 19:47:11

嗯:你并没有像你建议的那样使用“带有Javascript代码的CFML”。您拥有的是一些文本,而CFML恰好(有条件地)生成其他文本。

它生成的文本将包括:

代码语言:javascript
复制
<script language="JavaScript" type="text/JavaScript" > 
    var x = 2;
    var x = 5 
</script>

代码语言:javascript
复制
<script language="JavaScript" type="text/JavaScript" > 
    var x = 2;

</script>

取决于值URL.new。无论哪种方式,都只是CFML服务器有任何输入的时候的文本。

然后将该文本发送回web服务器,web服务器将其发送回请求它的浏览器。然后浏览器将文本解释为HTML,在HTML中有一些文本被告知作为JavaScript来处理。它也是这样做的(把它当作JavaScript,并运行它)。

但这与CFML服务器有任何关系已经很久了。所有CFML服务器都会大量输出文本。

这可能有助于您理解CFML服务器的请求/响应生命周期:"CFML请求/响应过程“。

票数 3
EN

Stack Overflow用户

发布于 2015-01-05 23:27:21

在这里,我可以看到您的代码有几个错误--这就是我在这里所要做的:

代码语言:javascript
复制
<script> 
    var x = 2;
    <cfif structKeyExists(URL, "new") AND URL.new IS true>x = 5;</cfif>
</script>
  1. 我添加了一个检查,以查看变量'new‘是否存在于URL作用域中--以防您在其他地方没有这样做。
  2. 如果您的CFIF语句使用=,则应该使用EQ或EQ。我不知道为什么CFIF逻辑有不同的语法,你可能真的期望,我不是100%之间的差别,IS和EQ在我的头顶。
  3. 您已经声明了VAR x=2,因此不需要再次定义变量--严格的JavaScript引擎可能会在此抛出错误。它已经定义好了,所以只需设置它的值即可。
  4. 如前所述,您在CF注入行的末尾缺少了一个分号。

您应该得到的代码是:

代码语言:javascript
复制
<script> 
    var x = 2;
    x = 5;
</script>

除此之外,你想做的事也是有道理的。我的工作中经常有一个CF > JavaScript 'bridge‘--只要您理解其中一个在编译时运行,然后页面被传递给web服务器,而另一个在运行时在客户端机器上运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27785565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档