我正在尝试将现有的ColdFusion代码库从Adobe CF8迁移到OpenBD。我的文件包括这样的内容:
/cfc/one.cfc
/cfc/two.cfc
/app/page.cfm
在CF8中,我有一个从'cfc'到'/ cfc'的映射,在page.cfm中我有:
<cfajaxproxy cfc="cfc.one" jsclassname="oneCfc">
<cfajaxproxy cfc="cfc.two" jsclassname="twoCfc">
然后在Javascript中我可以使用:
调用CFCvar c = new oneCfc();
......生活很美好。
在Open BD(v2.0.3b)下,我似乎无法从Javascript调用CFC函数。代理被声明为之前,我可以在Javascript中创建对象,但是当我尝试调用函数时,我的浏览器开发工具中出现以下错误:
POST http://127.0.0.1:8080/app/cfc/one.cfc 404 (Not Found)
当它试图调用函数时,它似乎在Javascript中使用相对路径,即使它已经创建了对象。
CFC根据OpenBD有效(我可以浏览到./cfc/one.cfc?wsdl
,我可以使用./cfc/one.cfc?method=getData
等来调用它上面的函数)。我是否在OpenBD中定义了映射似乎并不重要。
似乎有效的一种解决方法是让CFC与调用CFM文件具有相同的功能,但是当我想从许多不同的页面重用CFC代码时,这不是一个很好的解决方案。
有没有人在其他目录下使用OpenBD工作的CFC?
答案 0 :(得分:1)
供将来参考:2013年3月初发布的OpenBD 3.0解决了这个问题(或多或少)。
在3.0中,创建AJAX代理.js文件的代码为modified以包含以下行:
javascript.append( " this.remoteCFC = '" );
javascript.append( CFC.replace('.', '/') );
javascript.append( ".cfc';\r\n" );
虽然它仍然没有考虑任何服务器端映射,但它至少允许您引用不是当前.cfm页面子代的路径:
<cfajaxproxy cfc=".cfc.one" jsclassname="cfcOne">
(注意前导.
,由OpenBD替换为/
。在以前版本的OpenBD中,这会产生错误)