我是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>
答案 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