Как создать файл.cfc с помощью Ajax?

Я пытаюсь создать файл компонента ColdFusion (.cfc) и использовать Ajax для передачи моего запроса. Я делаю это правильно и могу ли я использовать Ajax в ColdFusion 7?

Добавлено из редактирования комментария ОП

Я обновил это еще раз, и, как я уже говорил выше, мой щелчок кнопки работает, и мой компонент работает, но вызов компонента ничего не делает. Может кто-нибудь взглянуть на это еще раз, чтобы увидеть, в чем может быть проблема. Я чувствую себя так близко. Кроме того, как я могу получить возвращенное значение?

Добавлено из редактирования комментария ОП

Я обновил код, но я все еще ничего не получаю. Может кто-нибудь, пожалуйста, помогите мне понять, что мне не хватает?

Следующее находится в 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);}
            }
        });
          });
    }

Это моя награда Total.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>

2 ответа

Вы переходите в grandTotal, и ваш метод ищет премиальные итоги. вы возвращаете пустую строку и ищете логическое значение. Попробуй это:

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 Крейвенс это правильно. Вы не можете использовать cfajaxproxy, но jquery ajax будет работать.

cfajaxproxy был представлен в ColdFusion 8, поэтому он недоступен для CF7.

Однако вы можете вызвать CFC в своем вызове jQuery ajax(), добавив метод и параметры в URL: awardTotal.cfc?method=myFunction&awardTotals=#awardTotals#

Вам, конечно, придется использовать access="remote" и возвращает вывод, который может обрабатывать JavaScript (опять же на CF7 ваши параметры немного ограничены, так как такие функции, как serializeJson() были добавлены и в CF8)

(см. вызов функции ColdFusion с использованием AJAX)

Другие вопросы по тегам