我是FW1的新手。我已经掌握了基础知识,但每当我尝试使其工作时,其他一些库就会很痛苦。很难想象什么是错的。
我想使用AJAX和jQuery(submitForm.js)将newServer.cfm中的表单数据发布到main.cfc中的控制器函数中。控制器功能将数据发送到服务(submit.cfc),后者将数据发送到DAO(submit.cfc)以插入数据库。如果成功则返回状态。
文件夹结构
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”,但仍无济于事。
答案 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();
});
});