我必须从远程访问点调试 Ajax Coldfusion8 应用程序,并且正在努力让任何工作正常工作。
系统在我的本地主机上运行良好,但在生产服务器上,我无处可去,页面加载无处可寻,但所有 Ajax 请求都被遗忘(提交错误)而不会触发 Coldfusion 错误。
我的 AJAX 设置如下:
1)。设置
$(document).on( "click", '.su, .cu' , function() {
var form = $(this).closest('form'),
switcher = form.find('input[name="form_sub"]').val(),
service = "../serve/form_user.cfc",
method = "process",
returnformat = "JSON",
targetUrl = "",
formdata = form.serialize()+"&method="+method+"&returnformat="+returnformat,
successHandler = function() {
alert("hello")
};
ajaxFormSubmit( form, service, formdata, targetUrl, successHandler, "no" );
return false;
});
进行 AJAX 调用
var ajaxFormSubmit = function ( form, service, formdata, targetUrl, successHandler, dataHandler ){ $.ajax({ async: false, type: "post", url: service, data: formdata, dataType: "json", success: function( objResponse ){ if (objResponse.SUCCESS){ alert("success!"); successHandler( objResponse ) } }) }
服务器端
在服务器端,我有一个“主从”cfc 设置。有 type-cfcs (用户,随便),它们是主 form_switch 的扩展,如下所示:
这两个文件都是从 application.cfc 映射的,如下所示:
THIS.mappings["/controllers"] = GetDirectoryFromPath( GetCurrentTemplatePath() ) & "controllers";
THIS.mappings["/serve"] = GetDirectoryFromPath( GetCurrentTemplatePath() ) & "services";
cfc 类型扩展到 form_switch
// user cfc
<cfcomponent extends="controllers.form_switch" output="false">
...
</cfcomponent>
form_switch 本身会完成所有基本工作,例如验证和调用 type.cfc 中的数据库提交。看起来像这样:
<cfcomponent output="false" hint="switchboard for form handling">
...
// function called by AJAX
<cffunction name="Process" access="remote" returntype="struct" output="false">
<cfset var LOCAL = {} />
<cfset LOCAL.Response = { Success = true, Errors = [], Data = "" } />
// set form data
<cfif IsStruct( ARGUMENTS[ 1 ] )>
<cfset THIS.SetFormData( ARGUMENTS[ 1 ] ) />
<cfelse>
<cfset THIS.SetFormData( ARGUMENTS ) />
</cfif>
// validate
<cfset LOCAL.Response.Errors = THIS.Validate() />
// commit
<cfif ArrayLen( LOCAL.Response.Errors )>
<cfset LOCAL.Response.Success = false />
<cfset LOCAL.Response.Errors = serializeJSON(LOCAL.Response.Errors)>
<cfelse>
<cftry>
<cfset LOCAL.Response = THIS.Commit() />
<cfcatch>
<cfset LOCAL.Response.Success = false />
<cfset LOCAL.Response.Errors = [["server_error","commit error"]] />
</cfcatch>
</cftry>
</cfif>
<cfreturn LOCAL.Response />
</cffunction>
</cfcomponent>
我不知道为什么它不起作用,更糟糕的是我猜是为什么?
ajax 返回“提交错误”,所以我到达 *form_switch* 好了。
问题: 我该如何调试?
我试过:
转储到屏幕 > 不起作用,因为我正在使用 AJAX。
转储到文件(我有服务器的完整路径,我可以访问服务器,所以我设置了一个 dump.txt 并尝试了
<cfdump output="F:\full\path\to_root\dump.txt" label="catch" var="hello">
但这给了我一封 505 错误电子邮件
Diagnose: An error occurred when performing a file operation write on file F:\full\path\to_root\dump.txt
我无法使用 CF admin AJAX 调试,因为我无法从远程访问 CFAdmin。
我还可以做些什么?此外,如果有人知道问题可能是什么......也欢迎回答......必须是基本的东西,比如搞砸的映射或在服务器上没有某种用户权限......我假设?
谢谢!
它是 Coldfusion8 和 MySql 5.0.88 .... 生产是 MySQL 5.5,但这是我认为的另一个问题。
编辑:
好的。我必须使用 e:\ 和 E:\ 从 application.cfc 写入 dump.txt。但它仍然不能从 form_switch 工作。