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

从Javascript/jQuery远程服务器调用Coldfusion函数,javascript,jquery,coldfusion,Javascript,Jquery,Coldfusion,我不熟悉ColdFusion,但熟悉JavaScript/jQuery。我花了很多时间研究这个问题,认为它一定很简单,但没有找到解决办法 我想从Javascript函数中调用对ColdFusion函数的服务器端调用。因此,当用户单击“提交”并满足所有要求时,将通过我的ColdFusion邮件服务器自动发送电子邮件。到目前为止运气不好。 这就是我所拥有的: JavaScript: function callback(value) { if (value) { if

我不熟悉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>

尊敬的用户:,
我们,在基岩,要感谢您的加入。
最美好的祝福
巴尼
谢谢你,用户名,注册。
我们刚刚给你发了一封电子邮件


我唯一一次做这样的事情是想看看是否可以。我有一个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");
}); 

$(文档).ready(函数(){
警惕(“之前”);
$.ajax({
url:“something.cfc?method=abc&returnFormat=JSON”,
全球:错,
类型:“POST”,
//数据:{username:name,pass:pass},
数据类型:“json”,
async:false,
成功:功能(msg){
警报(msg);
}
});
警报(“之后”);
}); 

这是CF代码

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

代码执行成功。这是你处境的起点,而不是最终答案


请注意,函数的访问属性设置为remote。这使得javascript可以使用。我唯一一次这样做是想看看是否可以。我有一个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");
}); 

$(文档).ready(函数(){
警惕(“之前”);
$.ajax({
url:“something.cfc?method=abc&returnFormat=JSON”,
全球:错,
类型:“POST”,
//数据:{username:name,pass:pass},
数据类型:“json”,
async:false,
成功:功能(msg){
警报(msg);
}
});
警报(“之后”);
}); 

这是CF代码

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

代码执行成功。这是你处境的起点,而不是最终答案


请注意,函数的访问属性设置为remote。除其他外,这使得javascript可以使用。

您可以使用
cfajaxproxy
从cfm文件中的javascript/jQuery对Coldfusion函数进行远程服务器调用

您可以将以下标签添加到要通过JS访问CF功能的页面

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

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

var instance=新的所需_js_class_name();
var result=instance.cf_function_to_call();

注意:只要您在CFM页面中使用JS,

您就可以使用
cfajaxproxy
从CFM文件中的Javascript/jQuery对Coldfusion函数进行远程服务器调用

您可以将以下标签添加到要通过JS访问CF功能的页面

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

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

var instance=新的所需_js_class_name();
var result=instance.cf_function_to_call();

注意:只要您在CFM页面中使用JS,这将起作用

您需要将ColdFusion代码保存在CFC中,并将方法标记为
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>

尊敬的用户:,
我们,在基岩,要感谢您的加入。
最美好的祝福
巴尼
谢谢您的注册,#arguments.username#。
我们刚刚给你发了一封电子邮件


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

您需要将ColdFusion代码保存在CFC中,并将方法标记为
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>

尊敬的用户:,
我们,在基岩,要感谢您的加入。
最美好的祝福
巴尼
谢谢您的注册,#arguments.username#。
我们刚刚给你发了一封电子邮件


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

在.cfc文件中使用sendMail函数可能比在.cfm文件中使用sendMail函数更幸运。将returntype更改为“any”让输出返回。正如@DanBracuk所提到的,我也一直使用cf组件来实现这一点。感谢您的帮助。你能举个例子说明我如何在.cfc中包含这段代码吗?我想你的意思是要有一个单独的文件并包括它。谢谢。你不包括氟氯化碳。您可以使用createObject()创建到它的连接。您也可以通过url调用cfc,只要组件函数标记为
access=remote
。ie
/path/to/YourComponent.cfc?method=someMethodName
。这就是您最初的示例试图做到的。它不起作用的原因是,该语法仅在.cfc的-而不是.cfm脚本中受支持。在.cfc文件中使用sendMail函数可能比在.cfm文件中使用sendMail函数更幸运。请将returntype更改为“any”,以便返回输出。正如@DanBracuk所提到的,我也一直使用cf组件来实现这一点。感谢您的帮助。你能举个例子说明我如何在.cfc中包含这段代码吗?我想你的意思是要有一个单独的文件并包括它