gpt4 book ai didi

mysql - 如何在没有 CFadmin 访问权限的情况下远程调试 Coldfusion AJAX 应用程序?

转载 作者:行者123 更新时间:2023-11-29 02:03:10 25 4
gpt4 key购买 nike

我必须从远程访问点调试 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;
});
  1. 进行 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 )
    }
    })
    }
  2. 服务器端
    在服务器端我有一个“master-slave”cfc-setup。有 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 中工作。

最佳答案

您是否尝试过使用 url 参数直接在浏览器中调用您的 cfc 方法,而不是通过 AJAX 执行的帖子?

用 cfabort 插入一个 cfdump。

像这样调用你的 cfc: http://yourdomain.com/serve/forms users.cfc?method=process&arg1=qwe&arg2=963

这应该为您提供方法的结果或错误转储

关于mysql - 如何在没有 CFadmin 访问权限的情况下远程调试 Coldfusion AJAX 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11366477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com