リモート アクセス ポイントから Ajax Coldfusion8 アプリケーションをデバッグする必要があり、何かを動作させるのに苦労しています。
システムは私のローカルホストでは正常に動作しますが、本番サーバーでは、ページが正常にロードされず、どこにもアクセスできませんが、Coldfusion エラーをトリガーすることなく、すべての Ajax 要求が忘却 (コミット エラー) になります。
私の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 セットアップがあります。次のようなメインの form_switch の拡張である type-cfcs (ユーザーなど) があります。
両方のファイルは、次のように 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
リモートから CFAdmin にアクセスできないため、CF 管理 AJAX デバッグを使用できません。
他に何ができますか?また、誰かが問題の可能性を知っている場合...回答も大歓迎です...マッピングの混乱やサーバー上でのある種のユーザー特権の欠如など、基本的なものでなければなりません...私は推測しますか?
ありがとう!
そしてそれはColdfusion8とMySql 5.0.88です....本番環境はMySQL 5.5ですが、これは別の問題だと思います。
編集:
わかりました。application.cfc から dump.txt に書き込むには、e:\ と E:\ を使用する必要があります。しかし、それでも form_switch からは機能しません。