【问题标题】:Trying to Pass Form Field Values To CFC via AJAX尝试通过 AJAX 将表单字段值传递给 CFC
【发布时间】:2016-09-18 01:31:54
【问题描述】:

我有两个表单域:

<cfinput type="text" name="ticket_id" id="ticket_id" value="#get_ticket.ticket_id#" tabindex="1" readonly="readonly" />

<textarea class='expanding' tabindex="0" name="admin_notes" id="admin_notes" cols="100" rows="5">#get_ticket.admin_notes#</textarea>

当我按下此按钮时,我正在尝试将这些字段的值传递给 CFC 函数。

<input type="button" name="addTechNotes" id="addTechNotes" value="Add New Note" />

这是我的 AJAX 调用:

<!---Javascript for adding notes to ticket --->  
<script>
$(document).ready(function () {
      //Submit form to add record.
      $('#addTechNotes').click(function (e) 
      {          
        e.preventDefault();
        $.ajax({
        data: {tech_notes : $("#tech_notes").val(), ticket_id : $("#ticket_id").val() },
        type:'POST',
        url:'../cfcs/add_ticket_notes.cfc?method=addNotes',
        success: function() {
        $("#addNotesMessage").append( "Note successfully entered." );

        error: console.log("error");
        }
        });
    });
});
</script>

当我单击按钮时,我的浏览器控制台会记录:错误(我的 AJAX 调用的错误属性)。我错过了什么?

这是我的 CFC:

<cffunction name="addNotes" access="remote" returnType="string">
<cfargument name="ticket_id" type="any" required="true">
<cfargument name="tech_notes" type="any" required="yes">

<!--- localize function variables --->
<cfset var dataDetail = "">
<cfoutput>
<cfquery name="dataDetail" datasource="#datasource#">
    update closed_tickets
    set tech_notes = <cfqueryparam value="#ARGUMENTS.tech_notes#" cfsqltype="cf_sql_varchar">
    <!--- adjust cfsqltype if needed --->
    WHERE ticket_id = <cfqueryparam value="#ARGUMENTS.ticket_id#" cfsqltype="cf_sql_varchar">
</cfquery>
</cfoutput>
<cfreturn dataDetail>

【问题讨论】:

  • 在浏览器中访问cfc URL时会发生什么?到目前为止,我看到在 CFC 中,returnType 是字符串,而您正在返回查询...
  • 会给你一个错误...
  • 我需要退货吗?我只想将数据发布到我的数据库中以获取该记录。
  • 实际上,删除 可以让 CFC 现在运行而不会抛出错误。
  • 现在作为一个独立于前端的问题,我会放置更多描述性的错误处理程序。试试下面的代码,看看你是否得到更多信息。错误:功能(响应){ console.log(响应); }

标签: ajax coldfusion cfc


【解决方案1】:

您的 Ajax 调用有点中断。试试这个:

<script>
$(document).ready(function () {
    //Submit form to add record.
    $('#addTechNotes').click(function (e) {          
        e.preventDefault();
        $.ajax({
            data: {
                tech_notes : $("#tech_notes").val(), 
                ticket_id : $("#ticket_id").val()
            },
            type:"POST",
            url:"../cfcs/add_ticket_notes.cfc?method=addNotes",
            success: function() {
                $("#addNotesMessage").append( "Note successfully entered." );
            }, // CLOSE THE SUCCESS PARAM
            // START THE ERROR PARAM
            error: function() {
                console.log("error");
            }
        });
    });
});
</script>

【讨论】:

  • 谢谢,我已经用你的建议更新了我的代码,但奇怪的是它运行 CFC 并更新相应的记录,但控制台报告错误并运行错误:代码。
  • 没关系,我发现了错误。我的 cfc 什么也没返回。添加了 ,现在一切正常。谢谢!
【解决方案2】:

您的 textarea 字段的名称和 ID 为“admin_notes”,但您在 ajax 调用中引用了 ID 为“tech_notes”的元素。

我也喜欢在我的数据字符串周围添加引号

data: '{tech_notes:\'' + $("#tech_notes").val() + '\', ticket_id: \'' + $("#ticket_id").val() + '\' }',

【讨论】:

    猜你喜欢
    • 2014-02-02
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多