使用AJAX将表格数据发布到Fw / 1(Coldfusion)控制器功能

时间:2015-11-30 23:13:03

标签: jquery ajax coldfusion cfml fw1

我是FW1的新手。我已经掌握了基础知识,但每当我尝试使其工作时,其他一些库就会很痛苦。很难想象什么是错的。

我想使用AJAX和jQuery(submitForm.js)将newServer.cfm中的表单数据发布到main.cfc中的控制器函数中。控制器功能将数据发送到服务(submit.cfc),后者将数据发送到DAO(submit.cfc)以插入数据库。如果成功则返回状态。

文件夹结构

Folder Structure

submitForm.js

$(document).ready(function() {
    $("#submitForm").submit(function(){
        dataString = $("#submitForm").serialize();
        $.ajax({
        type: "POST",
        url: "index.cfm?action=main.submit",
        dataType: "json",
        data: dataString,
        success: function(response) {

            $("#result").html(response);

        },
                error: function(xhr, status, e) {
                    $("#result").html(status);
                }

        });

    });
});

main.cfc(Controller)

<cfcomponent accessors="true" output="false">

    <cfproperty name="submitService">

    <cfscript>

        function init( fw ) {
            variables.fw = fw;
            return this;
        }

            public function submit(rc){
            json = deserializeJson(rc);
            rc.status = submitService.submitForm(json);
            }

    </cfscript>

</cfcomponent>

submit.cfc(服务)

<cfcomponent accessors="true">

    <cfproperty name="submitDAO">

    <cffunction name="submitForm" returnType="boolean" access="public" output="false" hint="I return a list of blog entries">
        <cfargument name="json" type="struct" required="true" hint="" displayname="rc" />

        <cfset status = "">
        <cfset status = submitDAO.submitForm(json)>
        <cfreturn status>

    </cffunction>

</cfcomponent>

只是为了检查我从DAO返回一个布尔值。

submit.cfc(DAO)

<cfcomponent accessors="true">

    <cffunction name="init" hint="I return an instance of myself">
        <cfreturn this>
    </cffunction>

    <cffunction name="submitForm" returntype="boolean" hint="I return a list of blog entries">
        <cfargument name="json" type="struct" required="true" hint="" displayname="rc" />
        <cfset var status = true>
        <cfreturn status>

    </cffunction>

</cfcomponent>

表单数据正在发布但在此之后没有响应。 Firebug在jQuery第8630行显示错误:

xhr.send( options.hasContent && options.data || null );

我尝试将ajax函数中的URL更改为“controllers / main.cfc?method = submit”,但仍无济于事。

Firebug控制台错误: enter image description here

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案。我的计划中有很多错误。我会发布它,以便如果有人遇到类似的问题,他们可以引用代码。我将在评论中包含主要更改。

<强> submitForm.js

$(document).ready(function() {
    $('#submitForm').submit(function(event){
        var dataString = $('#submitForm').serialize();
        $.ajax({
        type: 'POST',
        url: 'index.cfm?action=main.submit',
        data: dataString,
        dataType: 'json'
        })
        .done(function(response){

            console.log(response);

        })
        .fail(function(response) {

            console.log(response);

        });

    //I didnt prevent the default event from firing
    event.preventDefault();

    });
});