从ColdFusion CFC调用Javascript函数

时间:2013-10-11 15:17:39

标签: javascript ajax coldfusion cfc cffunction

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

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

  1. 调用位于我的functions.cfc文件中的CF函数
  2. 在CF函数中,调用JavaScript函数并等待响应
  3. 使用JS函数返回的值继续处理CF函数。
  4. 有什么想法吗?谢谢你的帮助!

2 个答案:

答案 0 :(得分:8)

您需要了解CF和JS不存在于同一环境中,并且不能相互交互:http://blog.adamcameron.me/2012/10/the-coldfusion-requestresponse-process.html

你的JS可以远程调用CF,但CF无法根据处理启动对JS的调用,因为在CF正在处理时,一切仍在服务器上,所以JS不是食谱的一部分。

你能做的最好的事情就是让CF代码写出JS代码,然后将其发送到浏览器,然后在浏览器在页面渲染过程中执行JS时执行。

但这真的不符合你想要做的事情。

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

你可以这样做:

  1. 从已加载的页面中,对functions.cfc
  2. 中的方法进行JS调用
  3. functions.cfc的方法调用只能处理,然后将内容返回给在1中触发请求的JS。
  4. JS然后可以决定下一步该做什么,也许可以将另一个请求发回functions.cfc以继续处理。
  5. 你不能做的是让步骤2回调JS 继续处理,然后将别的东西返回给JS。每个请求只能有一个响应。所以你可能不得不使用多个请求。

答案 1 :(得分:2)

过度复杂的事情试图使用javascript进行ajax调用。刚切换到使用cfhttp,所有都正常工作。 CF的DeserializeJSON方法非常适合解析从Google API返回的json对象。