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();
});
});
我是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();
});
});