【问题标题】:Call Javascript function from ColdFusion CFC从 ColdFusion CFC 调用 Javascript 函数
【发布时间】:2013-10-11 15:17:38
【问题描述】:

我有一个 ColdFusion 函数,它检查表中是否存在记录,如果存在,则返回找到的行的数据。但是,如果记录不存在,我想让它调用我编写的 JavaScript 函数,并使用从 JS 函数返回的值继续在 CF 函数中处理。我知道 CF 是用 Java 编写的,所以我希望有办法执行此任务。

基本上,从 CF 页面,步骤将是...

  1. 调用位于我的 functions.cfc 文件中的 CF 函数
  2. 在 CF 函数中,调用 JavaScript 函数并等待响应
  3. 使用 JS 函数返回的值继续在 CF 函数中处理。

有什么想法吗?感谢您的帮助!

【问题讨论】:

  • 只插入脚本标签?
  • @RUJordan,不确定你的意思。只需将其插入脚本标签?我需要调用的 javascript 函数对 Google API 执行 ajax 调用以查找邮政编码信息。
  • 所有 cf 代码和调用都是在页面呈现并发送到浏览器之前完成的......所以只需在一些 javascript 代码周围放置一个 CFIF 语句,以便它在收到返回的值时执行你想要的。
  • 尝试使用 javascript 进行 ajax 调用使事情变得过于复杂。刚刚切换到使用 cfhttp,一切都按需要工作。 CF 的 DeserializeJSON 方法非常适合解析从 Google API 返回的 json 对象。

标签: javascript ajax coldfusion cfc cffunction


【解决方案1】:

你要明白CF和JS不存在于同一个环境中,不能像这样相互交互:http://blog.adamcameron.me/2012/10/the-coldfusion-requestresponse-process.html

你的JS可以远程调用CF,但是CF不能基于its处理发起对JS的调用,因为CF在处理的时候,一切都还在服务器上,所以JS不在食谱的一部分。

你能做的最好的就是让CF代码写出JS代码,然后发送到浏览器,然后当浏览器在页面渲染期间执行JS时执行。

但这确实不符合您在这里想要做的事情。

您所做的任何事情都必须适应请求/响应生命周期。

你可以这样做:

  1. 从已经加载的页面,对functions.cfc中的方法进行JS调用
  2. functions.cfc的方法调用只能处理然后返回一些东西给1中触发请求的JS。
  3. 然后 JS 可以决定下一步做什么,可能会向functions.cfc 发起另一个请求以继续处理。

你不能做的是让第 2 步同时回调 JS 继续处理,然后稍后将 其他东西返回给 JS。每个请求只能有一个响应。所以你可能不得不使用多个请求。

【讨论】:

    【解决方案2】:

    尝试使用 javascript 进行 ajax 调用使事情变得过于复杂。刚刚切换到使用 cfhttp,一切都按需要工作。 CF 的 DeserializeJSON 方法非常适合解析从 Google API 返回的 json 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多