如何从javascript调用cfm页面上的cffunction?

esp*_*fee 2 javascript coldfusion cffunction

我想知道我是否可以拨打cffunction我的cfm页面?我有一个onClick按钮,应该调用cffunction同一页面上的那个.此外,我试图cfcomponent解决我的功能,但我收到此错误:

Invalid CFML construct found on line 94 at column 1.
ColdFusion was looking at the following text:

<
The CFML compiler was processing:
< marks the beginning of a ColdFusion tag.Did you mean LT or LTE?
Run Code Online (Sandbox Code Playgroud)

到目前为止我有这个:

<cffunction name="getRecords" access="remote">
    <script>
        alert('test');
    </script>
</cffunction>
Run Code Online (Sandbox Code Playgroud)

这是我的JS功能:

function getRecs(){
    try{
        location.href = 'myCFMpage.cfm?method=getRecords';
    }catch(err){
        alert('Error')
    }   
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否可能,我当前的代码没有触发警报cffunction.之所以我试图这样做是因为我cfquery在这个页面上有一个并且我想在用户点击按钮然后进行一些操作时从该查询中获取数据.如果有人能告诉我这是否可行或是否有更好的方法来解决这个问题,请告诉我.

sna*_*boy 6

在过去,我使用cfajaxproxy来完成从组件(cfc)到javascript的调用函数.(由于不同的开发范例,我不再这样做了,但这可能对你有所帮助.)首先,用你的函数创建一个cfc.

<cfcomponent>
    <cffunction name="getRecords" access="remote" returntype="string">
        <cfquery name="someQuery" datasource="someDataSource">
            select * from records
        </cfquery>
        <cfreturn serializeJSON(someQuery,'struct')> 
    </cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)

在您的模板.cfm文件中,您将使用cfajaxproxy在您的javascript中为我们声明组件.

<cfajaxproxy cfc="yourComponent" jsclassname="jsClass">
Run Code Online (Sandbox Code Playgroud)

然后,在同一个模板中,在您的javascript中,您将执行以下操作,并且您将能够将cfc函数用作jsClass中的方法.

<script type="text/javascript">
    var _myFuncs = new jsClass()

    function buttonClicked() {
        var _records = JSON.parse(_myFuncs.getRecords());
    }

</script> 
Run Code Online (Sandbox Code Playgroud)

希望这能提供一些见解.有很多解决方案,这是一个.我目前的开发模式是使用Angular并对CF组件执行$ http调用.我在cffunction中滚动了自己的JSON.但这就是我从简单的JS和CF开始的方式.

  • 我的投票让你的声誉超过了 100。你欠我一瓶啤酒。 (2认同)