2013-04-14 94 views
3

我之前使用过这个确切的代码 - 用PHP作为处理页面,但现在在Coldfusion中(不管我使用cfc还是仅仅使用cfm来处理),jQuery不会'吨似乎通过表单对象 - 以及...如果我看着萤火虫响应,'后'选项卡上显示所有字段和它们的值..应用程序/ x-www-form-urlencoded但是负责的页面URL属性没有得到它。和(在示例delow中)控制台日志(数据)显示一个空字符串。jquery - 表单数据没有在ajax调用中传递

继承人我有什么....

$('#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>'); 
      } 
     }); 
    } 

} 

和这里的形式

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

认沽在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> 
+0

你能告诉我们在client.put()中的代码吗? –

+0

@scott - 那里你去... – jpmyob

+0

也许尝试改变POST到PUT? – 1337holiday

回答

5

你CFC方法返回一个空字符串。

你有这样的:

<cfset _return = '' /> 

,并在方法结束时,你有这样的:

<cfreturn _return /> 

但是,你永远不会设置_return为不同的值。要测试是这样的问题,请试试这个:

<cfset _return = 'moo' /> 

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

0

你可以像下面那样通过ajax调用表单数据。

var formData = $('#client-form').serialize(); 
$.ajax({ 
    url: '/cfc/clent.cfc?method=put&' + formData, 
    type: 'POST', 
    data:{ 
    }, 
    success: function(data){}, 
    error: function(data){}, 
}) 
相关问题