我可以在JavaScript中使用ColdFusion标记吗?
我可以在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
<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的客户端混合。见: