Post 使用 AJAX 将数据形成为 Fw/1(Coldfusion) 控制器函数

Post form data to Fw/1(Coldfusion) controller function using AJAX

我是FW1的新手。我已经掌握了基础知识,但每当我尝试让它工作时,其他一些图书馆都会很痛苦。很难弄清楚出了什么问题。

我想 post 使用 AJAX 和 jQuery(submitForm.js 将 newServer.cfm 中的表单数据转换为 main.cfc 中的控制器函数).控制器功能将数据发送到服务(submit.cfc),服务(submit.cfc)将数据发送到 DAO(submit.cfc)以插入到数据库中。然后returns成功与否的状态。

文件夹结构

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(控制器)

<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>

正在 post 编辑表单数据,但之后没有任何响应。 Firebug 在 jQuery 行 8630 中显示错误:

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

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

Firebug 控制台错误:

我终于找到了解决办法。我的程序中有很多错误。我会 post 这样如果有人遇到类似的问题,他们可以参考代码。我会在评论中包含主要更改。

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();

    });
});