jquery - 表单数据未在ajax调用中传递

jpm*_*yob 3 coldfusion jquery

我之前使用过这个确切的代码 - 用PHP作为处理页面,但现在在coldfusion中(无论我使用cfc还是仅使用cfm进行处理)jQuery似乎没有传递表单对象 - 好吧......如果我看一下firebug响应,'post'选项卡显示所有字段及其值.application/x-www-form-urlencoded但是在URL属性中负责的页面却没有得到它...(在示例delow)控制台日志(数据)显示一个空字符串.

继承人我拥有的......

$( '#create_client' ).on( 'click', function( event ) {

    //form validation
    var bValid = true;

    if ( bValid ) {
        // AJAX Post data
        $.ajax({
            type: 'POST',
            dataType: 'html',
            cache: false,
            url: '/cfc/clent.cfc?method=put',
            data: $( '#client-form' ).serialize(),
            success: function( data ){
                console.log(data);
                loadClientTable();
            },
            error: function(){
                // tell user there was a problem
                $( '#clients-message' ).html( '<p>There was a problem submitting your request... Doh!</p>' );
            }
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

这是表格

<form name="client-form" id="client-form" class="singleLineForm" >
<label for="firstname">First Name: </label>
<input type="text" name="firstname" id="firstname" value="" maxlength="15" class="text ui-widget-content ui-corner-all" />
<label for="lastname">Last Name: </label>
<input type="text" name="lastname" id="lastname" value="" maxlength="15" class="text ui-widget-content ui-corner-all" />
<label for="email">Email: </label>
<input type="text" name="email" id="email" value="" maxlength="50" class="text ui-widget-content ui-corner-all" />
<label for="password">Password: </label>
<input type="text" name="password" id="password" value="" maxlength="20" class="text ui-widget-content ui-corner-all" />
<label for="isActive">Active? </label>
<input type="checkbox" name="isActive" id="isActive" value="1" class="checkbox ui-widget-content ui-corner-all" />
<input type="button" name="create_client" id="create_client" value="Create Client" class="button ui-widget-content ui-corner-all" />
</form>
Run Code Online (Sandbox Code Playgroud)

cfc中的放置看起来像这样(现在)

<cffunction name="put" access="public" returntype="structure" hint="PUT method, handles data transfering." >
    <cfargument name="email" type="string" required="yes" >
    <cfargument name="password" type="string" required="yes" >
    <cfargument name="firstname" type="string" required="yes" >
    <cfargument name="lastname" type="string" required="yes" >
    <cfargument name="isActive" type="numeric" required="yes" >

    <cfset _return = '' />

    <cfquery name="insertClient" datasource="#application.DSNwrite#" >
        INSERT INTO clients
        ( 
            email
            ,password
            ,firstname
            ,lastname
            ,isActive
        )
        VALUES
        ( 
            <cfqueryparam cfsqltype="cf_sql_varchar" value="#trim( arguments.email )#" />
            ,<cfqueryparam cfsqltype="cf_sql_varchar" value="#trim( arguments.password )#" />
            ,<cfqueryparam cfsqltype="cf_sql_varchar" value="#trim( arguments.firstname )#" />
            ,<cfqueryparam cfsqltype="cf_sql_varchar" value="#trim( arguments.lastname )#" />
            ,<cfqueryparam cfsqltype="cf_sql_bit" value="#val( arguments.isActive )#" />
        )
    </cfquery>

    <cfreturn _return />
</cffunction>
Run Code Online (Sandbox Code Playgroud)

Sco*_*roz 5

您的CFC方法返回一个空字符串.

你有这个:

<cfset _return = '' />
Run Code Online (Sandbox Code Playgroud)

在方法的最后,你有这个:

<cfreturn _return />
Run Code Online (Sandbox Code Playgroud)

然而,你永远不会设定_return不同的价值.要测试这是问题所在,试试这个:

 <cfset _return = 'moo' />
Run Code Online (Sandbox Code Playgroud)

如果你'moo'返回,一切都按预期工作.