远程服务器从Javascript / jQuery调用Coldfusion函数

时间:2014-12-29 18:28:58

标签: javascript jquery coldfusion

我是ColdFusion的新手,但在JavaScript / jQuery方面知识渊博。我花了很多时间研究这个问题并认为它必须简单,但无法提出解决方案。

我想从我的Javascript函数中调用对ColdFusion函数的服务器端调用。因此,当用户单击“提交”并满足所有要求时,将通过我的ColdFusion邮件服务器自动发送电子邮件。到目前为止没有运气。 这就是我所拥有的:

JavaScript:

function callback(value) 
{
    if (value)
    {
        if (newShowing) //checks validity of email address again before submitting
        {
            var email = $("#contactEmail").val();
        }
        else 
        {
            var email = $("#contactEmail2").val();
        } 

        var isEmail = validateEmail2(email); 
        if (isEmail == true)
        {

           //invoke coldfusion sendEmail function
           $.get('/department/indexWebReq.cfm?method=sendEmail'); 
           alert("Submitted Request!");
           $("#webRequest-form").dialog("close");
        }

    }
}/

ColdFusion的:

<cffunction name="sendEmail" returntype = "void">
    <cfmail to="email@email.edu"
       from="email@gmail.com"
       subject="Welcome to Bedrock"
       type="text">
        Dear User,

        We, here at Bedrock, would like to thank you for joining.

        Best wishes
        Barney
    </cfmail>
    <cfoutput>
       <p>Thank you, UserName, for registering.
        We have just sent you an email.</p>
    </cfoutput>
</cffunction>

3 个答案:

答案 0 :(得分:4)

我唯一一次做过这样的事情就是在我想看看能不能做到的时候。我有这个jquery代码:

<script type="text/javascript" charset="utf-8" src="/JS/lib/jquery-1.8.0.min.js"></script>
<script>

$(document).ready(function(){
alert("before");

$.ajax({

url: "something.cfc?method=abc&returnFormat=JSON",
global: false,
type: "POST",
//data: {username:name,password:pass},
dataType: "json",
async:false,
success: function(msg){
alert(msg);
}
});
alert("after");
}); 

这个CF代码

<cfcomponent>
<cffunction name="abc" access="remote" returntype="string">
<cfreturn "hello">
</cffunction>
</cfcomponent>

代码执行成功。它是您情况的起点,而非最终答案。

请注意,该函数的access属性设置为remote。这使得它可用于javascript等等。

答案 1 :(得分:0)

您可以使用cfajaxproxy从cfm文件中的Javascript / jQuery远程服务器调用Coldfusion函数。

您可以通过JS
将以下标签添加到要访问CF功能的页面 <cfajaxproxy cfc="name_of_the_component" jsclassname="desired_js_class_name">

在cfm页面中添加上述标签后,您可以写 -

<script language="javascript">
        var instance = new desired_js_class_name();
        var result = instance.cf_function_to_call();
</script>

注意:只要您在CFM页面中使用JS ,这将有效。

答案 2 :(得分:0)

您需要在CFC中使用ColdFusion代码,并将方法标记为access="remote"。我根据您发布的内容对其进行了一次拍摄,并添加了一些动态参数,例如,但由于电子邮件的影响,我还没有对此进行全面测试。

<cfcomponent displayname="mycfc">
    <cffunction name="sendEmail" returntype="void" access="remote">
        <cfargument name="to" type="string" required="true" />
        <cfargument name="username" type="string" required="true" />
            <cfmail to=arguments.to
           from="email@gmail.com"
           subject="Welcome to Bedrock"
           type="text">
            Dear User,

            We, here at Bedrock, would like to thank you for joining.

            Best wishes
            Barney
        </cfmail>
        <cfoutput>
           <p>Thank you, #arguments.username#, for registering.
            We have just sent you an email.</p>
        </cfoutput>
    </cffunction>   
</cfcomponent>

如果在应用程序的根目录下将其命名为mycfc.cfc,则可以使用此URL从javascript调用它:/mycfc.cfc?method=sendEmail&to=test@example.com&username=test