我可以在JavaScript中使用ColdFusion标记吗?

我可以在JavaScript中使用ColdFusion标记吗?,coldfusion,Coldfusion,我可以在JavaScript中使用ColdFusion标记吗?例如: <script language="javascript" type="text/javascript"> function validateUser() { var userName = document.getElementById("username"); <CFQUERY DATASOURCE="mydatasourcename" NAME="getUser"> sele

我可以在JavaScript中使用ColdFusion标记吗?例如:

 <script language="javascript" type="text/javascript">
   function validateUser() {
    var userName = document.getElementById("username");

 <CFQUERY DATASOURCE="mydatasourcename" NAME="getUser">
  select USER_ID,COUNT(*) from  user u 
 where u.firstname=userName;
  </CFQUERY>
 <cfif getUser.recordCount EQ 0>
   <!--- Show eroor message --->
   <cfelse>
    <!--- Assign userId to hidden field --->
    document.getElementById("userid").value=#USER_ID#
  </cfif>   
    }
 </script>

<input type='textbox' name='username' id='username' onblur=validateUser()/>
<input type='hidden' name='userid' id='userid'/>
当最终用户输入用户名时,我想在数据库中检查这个用户名是否存在。如果存在,我必须将userid保留在hiddenfield中,否则会抛出错误

我这样做对吗?如果是错误的,您能建议正确的方法吗?

长版本:

简短版本:不,你做得不对

中型StackOverflow友好版:CFML代码在请求的服务器端运行;JavaScript在客户端浏览器上运行。需要明确的是:ColdFusion服务器根本不与浏览器直接通信:两者之间有一个web服务器。客户端浏览器请求一个文件,web服务器配置为将.cfm请求传递给ColdFusion服务器,并运行其代码,将生成的字符串返回给web服务器,然后web服务器将该字符串返回给浏览器。该HTML可能包含JavaScript内联或作为外部请求,然后浏览器将执行这些请求

希望从中您可以看到服务器端代码和客户端代码之间没有直接交互

不过,您可以使用两种工具来实现这两种设备的异步通信。首先:CFML代码写出文本,但该文本可以是JS,浏览器在最终收到文本时运行JS。比如:

<cfset msg ="G'day world">
<script>alert("<cfoutput>#msg#</cfoutput>");</script>
CFML服务器处理完后,返回到浏览器的是:

<script>alert("G'day world");</script>
这样,如果服务器端代码将数据作为其响应的一部分写出,则服务器端代码数据可以在客户端进程中使用。上面的例子非常简单,不是一个很好的实践方法,但它演示了该技术

如果需要在客户机上使用JS代码与服务器通信,那么唯一真正可行的方法是向服务器发出AJAX请求,将客户端信息传递给服务器,以便进行进一步的服务器端处理,并让服务器做出响应。解释如何最好地做到这一点超出了你问题的范围,但有大量信息可以说明这一点

CFML为您提供了一些编写HTML和JS的向导来帮助您实现这一点,但总的来说,这是实现这一目标的一种不好的方法,所以我不推荐使用它。不过,我将向您介绍一个为内置CFML向导提供HTML/JS/CSS解决方案的项目:

回到简短的回答:不,你不能做你打算做的事情,因为有很好的理由,但是如果你改变你的方法,你可以达到你想要的目的

您需要了解的是,通过ajaxjquery将表单字段传递回服务器非常简单,并在单独的请求中运行代码

如果你读了我从一开始就提到的那篇博客文章Disclour:我写的,但我是专门为这种情况写的,那么你就会明白为什么


如果您在处理部分解决方案时遇到困难:请提出另一个问题,重点放在您遇到困难的部分。

否。ColdFusion在服务器上运行;javascript在客户端上运行。请参阅:附加到@beloitdavisja注释-您可以在脚本中输出ColdFusion变量,但这就是您所能做的。如果这些脚本标记中有语句、函数、查询或任何此类编程逻辑,则不可用。这可能是一个与相关的问题。是ColdFusion和Javascript的客户端混合。见: