Как создать файл.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)