2012-01-13 26 views
2

基本的には、オブジェクトを作成し、このオブジェクトのいくつかのメソッドを呼び出してユーザーをログインさせる別のCFMをCFMから呼び出しています。それ以外の場合は、画面にエラーが表示されます。Coldfusion:CFMから別のCFMにjsonを渡しますか?

エラーを印刷する代わりに、CFMを使用してJSONオブジェクトを呼び出すファイルにJSMオブジェクトを送信する方法がありますか?ここで

は私のAjaxです:

// processing the login form using jQuery 
    $("#loginForm").submit(function(event){ 
     // prevents the form from being submitted, the event is the arg to the function 
     event.preventDefault(); 

     // stores the data from the form into a variable to be used later 
     dataString = $("#loginForm").serialize(); 

     // the AJAX request 
     $.ajax 
     ({ 
      type: "POST", 
      url: "/helpers/auth/ldap/login_demo.cfm", 
      data: dataString, 
      //dataType: "text", 
      success: function() 
      { 
       location.reload(); 
      }, 
      error: function(ErrorMsg) 
      { 
       $("#hiddenLoginError").show("fast"); 
       $("#loginForm p").css("margin-bottom","3px"); 
      } 
     }); 

    }); 

答えて

1

、あなたはページがAjaxで要求されたかどうかをチェックする<cfif>声明を持つことができます。それがajaxなら、jsonオブジェクトを返します。

<cfset isAjax = (isDefined('cgi.http_x_requested_with') AND lcase(cgi.http_x_requested_with) EQ 'xmlhttprequest')> 
... 
<cfif isAjax> 
    <cfcontent reset="true">{ "result":false, "message": "Login Failure" }<cfabort> 
</cfif> 

あなたは、応答をテストすることができます。

dataType: "json", 
success: function(rdata) { 
    alert(rdata.message); 
} 
+0

をだから、データが成功関数は常にtrueになります返すため? –

+0

指定しない限り200ヘッダを返すので、常にsuccess関数が実行されます。成功関数のデータは、返されたものに基づいています。私の例では、私は2つのキーを持つオブジェクトを返しました。最初のキー 'result'にはfalseに等しいブール値が含まれています。私のコードは、ログインのサンプルレスポンスが失敗したことを示しています。 –

+0

私はjavascript変数を設定する成功領域を使用する方法はありますか?私はmyVar = rdata.messageを試しました。運がない。 –

1

は試してみてください。あなたのCFMページ

<cfoutput>#serializeJSON(object)#</cfoutput> 
+0

優秀なポイントサム... – Fergus

関連する問題