我可以在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'/>
当最终用户输入其用户名时,我想在数据库中检查该用户名是否存在。如果存在,则必须将用户标识保留在hiddenfield中,否则将引发错误。
我这样做正确吗?如果错了,您能建议正确的方法吗?
长版:http://blog.adamcameron.me/2012/10/the-coldfusion-requestresponse-process.html
简短版:不,您做得不正确。
中型StackOverflow友好版本:CFML代码在请求的服务器端运行;JavaScript在客户端浏览器上运行。需要明确的是:ColdFusion服务器从不直接与浏览器进行通信:两者之间有一个Web服务器。客户端浏览器请求一个文件,Web服务器配置为将.cfm请求传递到ColdFusion服务器,然后运行其代码,将结果字符串(例如HTML Web页面)返回到Web服务器,然后将其返回给Web服务器。浏览器。该HTML可能包含浏览器随后将执行的JavaScript(内联或作为外部请求)。
希望由此您可以看到服务器端代码和客户端代码之间没有直接交互。
您可以使用两个工具来使两个异步通信。首先:CFML代码写出文本,但是该文本可以是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解决方案的项目:https : //github.com/cfjedimaster/ColdFusion-UI-the-Right-Way
回到简短的答案:不,您不能出于非常充分的理由而做自己打算做的事情,但是如果您修改自己的方法,则可以实现您想要的目标。
您需要查看的是通过AJAX将表单字段传递回服务器(jQuery非常简单),然后<cfquery>
在单独的请求中运行代码。
如果您从一开始就读过我提到的博客文章(披露:我写了它,但是我专门针对这样的情况写了它),那么您会明白为什么。
如果您在解决方案的某些部分时遇到问题,请提出另一个问题,将重点放在您遇到的问题上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句