2

リモート アクセス ポイントから 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;
    });
  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. サーバー側
    サーバー側には、「マスター/スレーブ」の 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 からは機能しません。

4

2 に答える 2

3

AJAX から行う投稿の代わりに、url パラメーターを使用してブラウザーで直接 cfc メソッドを呼び出してみましたか?

cfabort を使用して、キャッチに cfdump を貼り付けます。

次のように CFC を呼び出します: http://yourdomain.com/serve/forms users.cfc?method=process&arg1=qwe&arg2=963

これにより、メソッドの結果またはエラーのダンプが得られるはずです

于 2012-07-06T18:16:15.947 に答える
0

確かに基本的な問題....

 E:\ != e:\
于 2012-07-06T17:11:12.933 に答える