0

ColdFusion コンポーネント (.cfc) ファイルを作成し、Ajax を使用してクエリを渡そうとしています。これを正しく行っていますか? ColdFusion 7 で Ajax を使用できますか?

OPの編集コメントより追加

これをもう一度更新しました。上で述べたように、ボタンのクリックは機能し、コンポーネントは機能しますが、コンポーネントへの呼び出しは何もしません。誰かがもう一度それを見て、問題が何であるかを確認できますか. 私はとても近くにいるように感じます。また、戻り値を取得するにはどうすればよいですか?

OPの編集コメントより追加

コードを更新しましたが、まだ何も得られません。誰かが私が欠けているものを理解するのを手伝ってくれますか?

以下は form.cfm にあります。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
    function validateFunding(){
        $('#Finalize').click(function(){  
        $.ajax({
             type:"get",
                url: "awardTotals.cfc?method=searchAward",
                data: {total: $("totals").val(), codeNum: $("CodeNum").val(), testYear: $("TestYear").val, selType: $("selType").val, selJuris: $("selJuris").val},
            success: function(data) {
            if (isTotals == true) { alert('There is a match');} else { alert('This does not match);}
            }
        });
          });
    }

これは私の awardTotal.cfc です。

    <cfcomponent>
        <cffunction name="searchAward" access="remote" returntype="any">
            <cfargument name="Total" type="numeric" required="true">
            <cfargument name="CodeNum" type="string" required="true">
                    <cfargument name="TestYear" type="numeric" required="true">
                    <cfargument name="SelType" type="numeric" required="true">
                    <cfargument name="SelJuris" type="numeric" required="true">
                <cfset var searchAwards = "">
            <cfquery name="searchAwards" datasource="Test">
             SELECT g.Code1 + g.Code2 + g.Code3 + g.Code4 AS GrandTotal
                     FROM Codes g 
                    WHERE g.CodeNumber = <cfqueryparam cfsqltype="cf_sql_varchar"  value="#arguments.CodeNum#">
                     AND g.TestYear = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.TestYear#">
                     AND g.SelType = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.SelType#">  
                       AND g.Jurisdiction = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.SelJuris#">   
             </cfquery> 
           <cfscript>
          if(arguments.Totals = searchAwards.GrandTotal){
             return true;
          } else {
             return false;
          }
        </cfscript>
        </cffunction>
    </cfcomponent>
4

2 に答える 2

2

grandTotal を渡しており、メソッドは awardTotals を探しています。空の文字列を返し、ブール値を探しています。これを試して :

function ValidateFunding(awardTotals){
    $.ajax({
        url: 'awardTotals.cfc',
        data: {method: 'searchAward',  awardTotals: numberToPass},
        success: function(data) {
        if (isTotals == true) { alert('There is a match');} else { alert('This does not match);}
        }
    });
}

それで

<cfcomponent>
    <cffunction name="myFunction" access="public" returntype="Query">
        <cfargument name="awardTotals" type="string" required="true">

        <cfset var searchAward = queryNew()>
        <cfquery name="searchAward" datasource="Test">
                SELECT g.Code1 + g.Code2 + g.Code3 + g.Code4 AS GrandTotal
                FROM Codes g 
                WHERE g.CodeNumber = <cfqueryparam cfsqltype="cf_sql_varchar"  value="#form.CodeNum#">
                  AND g.TestYear = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.TestYear#">
                  AND g.SelType = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.SelType#">   
                  AND g.Jurisdiction = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.SelJuris#">    
         </cfquery> 
       <cfscript>
          if(arguments.awardTotals eq searchAward.grandTotal){
             return true;
          } else {
             return false;
          }
    </cffunction>
</cfcomponent>

@billy Cravens は正しいです。cfajaxproxy は使用できませんが、jquery ajax は機能します。

于 2013-03-26T21:18:07.640 に答える
1

cfajaxproxy は ColdFusion 8 で導入されたため、CF7 では使用できません。

ただし、URL にメソッドとパラメーターを追加することで、jQuery ajax() 呼び出しで CFC を呼び出すことができます。awardTotal.cfc?method=myFunction&awardTotals=#awardTotals#

もちろん、JavaScript が処理できる出力を使用して返す必要があります (CF8 にも同様の関数が追加されたため、CF7access="remote"ではオプションが少し制限されています)。serializeJson()

(「AJAX を使用して ColdFusion 関数を呼び出す」を参照)

于 2013-03-26T20:52:44.743 に答える