coldfusion - 我可以在 JavaScript 中使用 ColdFusion 标签吗?

标签 coldfusion

我可以在 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'/>

当最终用户输入他们的用户名时,我想检查数据库中该用户名是否存在。如果存在,我必须将用户 ID 保留在隐藏字段中,否则会抛出错误。

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

最佳答案

长版:http://blog.adamcameron.me/2012/10/the-coldfusion-requestresponse-process.html

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

中型StackOverflow友好版本:CFML代码在请求的服务器端运行; JavaScript 在客户端浏览器上运行。需要明确的是:ColdFusion 服务器根本不直接与浏览器通信:中间有一个 Web 服务器。客户端浏览器请求一个文件,Web 服务器配置为将 .cfm 请求传递到 ColdFusion 服务器,然后运行其代码,将结果字符串(例如:HTML 网页)返回到 Web 服务器,然后 Web 服务器将其返回到浏览器。该 HTML 可能包含 JavaScript(内联或作为外部请求),然后浏览器将执行该 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>代码在单独的请求中。

如果您阅读了我从一开始就提到的那篇博客文章(披露:我写了它,但我是专门针对这种情况写的),那么您就会明白为什么。

如果您在解决部分解决方案时遇到困难:提出另一个问题,更关注您遇到困难的部分。

关于coldfusion - 我可以在 JavaScript 中使用 ColdFusion 标签吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39375643/

相关文章:

mysql - 从 Coldfusion 导入 MySQL 时如何检查 MySQL 中的重复条目?

java - 什么是默认的 JDBC 字符编码

mysql - Coldfusion 分页(下一个和上一个)

rest - 在 REST 服务函数中调用 init 函数

coldfusion - Railo 的 cfvideo 标签可以在 Adob​​e CF 下使用吗?

javascript - 处理 JQuery ajax 成功对象数据

sql - cfquery 文本编码问题

java - 如何将ColdFusion 加密与Java 1.4.2 相匹配?

sql - 空字符串查询的 Coldfusion 查询

php - FB 好友选择器框架位于 https 中,无法与 http 中的托管页面交互