我正在尝试将现有的ColdFusion代码库从AdobeCF8迁移到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中,我可以使用以下方法调用CFC:
var c = new oneCfc();...and的生活很好。
然而,在Open (v2.0.3b)下,我似乎不能从Javascript调用CFC函数。代理和前面一样声明,我可以在Javascript中创建对象,但是当我试图调用一个函数时,我会在浏览器开发工具中得到以下错误:
POST http://127.0.0.1:8080/app/cfc/one.cfc 404 (Not Found) 当它试图调用函数时,它似乎在使用Javascript中的相对路径,即使它已经创建了对象。
根据OpenBD,CFC是有效的(我可以浏览到./cfc/one.cfc?wsdl,并且可以使用./cfc/one.cfc?method=getData等调用函数)。我是否在OpenBD中定义了映射似乎并不重要。
解决方法似乎是让CFC与调用CFM文件的功能相同,但当我想从许多不同的页面重用CFC代码时,这不是一个很好的解决方案。
是否有人在OpenBD下的其他目录中有CFCs?
发布于 2013-04-04 09:03:45
供将来参考:这个问题已经在2013年3月初发布的OpenBD 3.0中得到了解决(或多或少)。
在3.0中,创建AJAX代理.js文件的代码是已修改,包括以下行:
javascript.append( " this.remoteCFC = '" );
javascript.append( CFC.replace('.', '/') );
javascript.append( ".cfc';\r\n" );虽然它仍然没有考虑到任何服务器端映射,但它至少允许您引用一个不是当前.cfm页面的子路径:
<cfajaxproxy cfc=".cfc.one" jsclassname="cfcOne">(请注意前面的.,它被OpenBD替换为/。在早期版本的OpenBD中,这将生成一个错误)
https://stackoverflow.com/questions/13814223
复制相似问题