【问题标题】:Using AJAX to Call a CFC使用 AJAX 调用 CFC
【发布时间】:2013-11-22 16:17:29
【问题描述】:

我有一个 .cfc 文件和一个 .cfm 文件。我想调用位于 .cfc 文件中的名为“sendemail”的函数,并在该函数成功完成后提醒用户。我使用的是jquery,所以当用户点击链接时,它会触发这个功能。

这就是我目前所拥有的......

index.cfm 文件

<script>
$(document).ready(function(){
$(".forgot-pin").click(function(){
    var getSchoolEmail = $("#schoolaccnt").val();

    if (getSchoolEmail == '0'){
        alert ("Please select school");
    }else{
        chkSchoolEmail = function(theAccNumber){
        $.getJSON("/email.cfc",{
            method:'sendemail',
            accnumber: theAccNumber,
            returnformat: 'json'    
        }, function(){
            alert("Your PIN Number has been sent to your email   address.");
        });
    }

    }
});

</script>


<label>Please sign in below:</label>
    <select id="schoolaccnt">
        <option value="0">Select Your School</option>
            <cfoutput query="get_schools">
                <option value="#sch_id#">#sch_name#</option>
            </cfoutput>
    </select>
<span class="forgot-pin">Forgot PIN?</span>

email.cfc 文件

<cffunction name="sendemail" access="remote" returnformat = "json" >
<cfargument name="accnumber" required="true" type="string">
<cfset object =  CreateObject("Component","cfobject")>
    <cfquery name="get_schools" datasource="#dsn#">
        SELECT sch_id,sch_name,sch_email_address,sch_pin_num
        FROM   DATABASENAMEHERE
        WHERE sch_id = '#trim(accnumber)#'
    </cfquery><!---  --->
        <cfmail from="EMAIL" to=EMAILPULLEDOUTFROMDATABASE type="html"  subject="Your PIN" >
            Your PIN is <cfoutput>PINGOTFROMDB</cfoutput>
        </cfmail>
    <cfset result = 1>
<cfreturn object>

如果用户不知道他/她的密码,他/她从下拉列表中选择并单击“忘记密码”链接,它应该会提示“密码已发送到电子邮件地址”。

我的问题:
jquery 没有调用该函数。我不确定它的结构是否正确,或者我是否遗漏了什么。

任何解决此问题的想法将不胜感激!

*** 编辑 ****

function sendMyPin(schoolaccnt){
var getschool = document.getElementById("schoolaccnt").value;
    if (getschool == '0') {
        alert("Please select school.");
    } else { 
    DWREngine._execute("email.cfc", null, 'sendemail', getschool, getEmailResult);
    }

function  getEmailResult(emailObject){
alert('Your PIN has been sent to your e-mail.');                
}

现在这在 CHROME 上不起作用!!!但在 IE 和 FF 中运行良好

【问题讨论】:

  • 我的想法是一次只做一件事。第一件事是通过从冷融合页面调用它来确保你的函数确实有效。
  • 按 F12 并检查浏览器控制台是否有错误。
  • 您的 JS 代码正在尝试调用 send_email_function.cfc,但您声明 CFC 名称为 Email.cfc
  • @DanBracuk 它运行良好。我确定这是我的 jquery。也许我遗漏了什么或者我使用了错误的参数。
  • 完美运行?只是出于好奇,它返回了什么?

标签: javascript jquery ajax coldfusion cfml


【解决方案1】:

点击处理程序只定义了一个函数chkSchoolEmail = function(theAccNumber){...}。它不会调用它。

$(".forgot-pin").click(function(){
    var getSchoolEmail = $("#schoolaccnt").val();

    if (getSchoolEmail == '0'){
        alert ("Please select school");
    } else {
        $.getJSON("/email.cfc",{
            method:'sendemail',
            accnumber: theAccNumber,
            returnformat: 'json'    
        }, function(){
            alert("Your PIN Number has been sent to your email   address.");
        });
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多