我有一个日志功能(不能使用cflog)包含在application.cfm中,我的.cfm页面可以访问它,但我使用的任何组件都给我一个"变量LOGGER未定义".错误.
application.cfm
<cfinclude template="logging.cfm">
Run Code Online (Sandbox Code Playgroud)
logging.cfm
<cffunction name="logger" >
...
</cffunction>
Run Code Online (Sandbox Code Playgroud)
关于我做错了什么的任何想法?
我尽可能地简化了这个例子.我有一个远程功能:
<cfcomponent output="false">
<cffunction name="Read" access="remote" output="false">
<cfset var local = {}>
<cfquery name="local.qry" datasource="myDatasource">
SELECT PersonID,FirstName,LastName FROM Person
</cfquery>
<cfreturn local.qry>
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
使用jQuery $ .ajax方法,我想制作一个无序的每个人列表.
<!DOCTYPE HTML>
<html>
<head>
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1");
</script>
<script type="text/javascript">
jQuery(function($){
$.ajax({
url: "Remote/Person.cfc?method=Read&ReturnFormat=json",
success: function(data){
var str = '<ul>';
// This is where I need help:
for (var I=0; I<data.length; I++) {
str += '<li>' + I + data[I][1]+ '</li>'
}
str += '</ul>';
$('body').html(str);
},
error: function(ErrorMsg){
console.log("Error"); …Run Code Online (Sandbox Code Playgroud) 我正在看Ben的例子@ http://www.bennadel.com/blog/1515-Ask-Ben-Building-An-AJAX-jQuery-And-ColdFusion-Powered-Application.htm并且想到一个超简单的例子我自己的.但似乎即使CFC返回格式正确的JSON,它总是在我的错误处理程序中出现错误:
Invalid JSON: {"ERRORS":"","SUCCESS":true,"DATA":"id DEX015-002-00, whs W1, qty 9"}
这是ajax电话
$.ajax({
type: 'GET',
url: 'bridge.cfc',
data: {
method: 'UpdateQty',
id: 'DEX015-002-00',
whs: 'W1',
qty: '9'
},
dataType:'json',
success: function(res, status, req){ alert("Message from server:\n" + "res: " + res); },
error: function(req, status, err){ "Error from server:\n" + "err: " + err); }
});
Run Code Online (Sandbox Code Playgroud)
继承人CFC"bridge.cfc"
<cfcomponent>
<cffunction name="UpdateQty" access="remote" returntype="struct" returnformat="json" output="false">
<cfargument name="id" required="yes" type="string">
<cfargument name="whs" required="yes" type="string">
<cfargument name="qty" required="yes" type="string">
<cfset res = structNew()> …Run Code Online (Sandbox Code Playgroud) 我有一堆外部表单,通过CFC将数据发布到数据库中.
我做的是
我还能做什么或者应该做些什么来保护应用程序免受插入时的SQL攻击?我在select语句中使用CFqueryParam,我是否也应该在insert语句中使用?
简单CFC的示例:
<!--- Instance Veriables --->
<cfparam name="THIS.firstPrintedField" type="string" default="#NullString#" />
<cfparam name="THIS.SecondPrintedField" type="string" default="#NullString#" />
<cfparam name="THIS.participantFullName" type="string" default="#NullString#" />
<cfparam name="THIS.studentStatus" type="string" default="#NullString#" />
<cfparam name="THIS.dob" type="date" default="#NullDate#" />
<cfparam name="THIS.readAndUnderStood_Day" type="string" default="#NullString#" />
<cfparam name="THIS.readAndUnderStood_Month" type="string" default="#NullString#" />
<cfparam name="THIS.readAndUnderStood_Year" type="string" default="#NullString#" />
<cfparam name="THIS.agreeToTerms" type="boolean" default="#NullBool#" />
<cfparam name="THIS.guardianFirstName" type="string" default="#NullString#" />
<cfparam name="THIS.guardianMiddleName" type="string" default="#NullString#" />
<cfparam name="THIS.guardianLastName" type="string" default="#NullString#" />
<cfparam name="THIS.DateTimeSubmited" type="date" default="#NullDate#" />
<cffunction access="public" …Run Code Online (Sandbox Code Playgroud) 我正在考虑尝试解决表单和远程CFC安全性的想法我想知道设置一个非常长/永久的会话持续时间和使用
if DateDiff("n", now(), session.lastactive) gt 15
Run Code Online (Sandbox Code Playgroud)
在onRequest中处理会话超时.然后我可以在引用/调用页面中设置session.referrer并在表单处理程序或远程cfc中测试它.我还没有读到它已经完成,所以有可能有很好的理由不这样做?
我正在使用ColdFusion 9.0.1.
首先让我说我可能没有问正确的问题.由于每个函数独立工作,只有当一个函数调用另一个函数时才会失败,我认为问题在于如何调用函数.
我正在创建一个包含结构的应用程序变量.该结构包含对象的引用,orders.cfc.
if (not isDefined("APPLICATION.AppInfo") or not isStruct(APPLICATION.AppInfo)) {
APPLICATION.AppInfo = structNew();
APPLICATION.AppInfo.objOrders = createObject("component", "globaladmin.orders");
}
Run Code Online (Sandbox Code Playgroud)
我能够成功访问orders.cfc中的方法,如下所示:
OrderItemList = APPLICATION.AppInfo.objOrders.orderItemList(URL.Customer);
Run Code Online (Sandbox Code Playgroud)
我在orders.cfc中有调用order.cfc中的其他方法的方法,有点像这样(为了简单而伪造):
<cffunction name="orderItemList">
<cfscript>
LOCAL.RandomNumber = getRandomNumber();
return LOCAL.RandomNumber;
</cfscript>
</cffunction>
<cffunction name="getRandomNumber">
<cfscript>
LOCAL.SomeNumber= randRange(0,10);
return LOCAL.SomeNumber;
</cfscript>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Entity has incorrect type for being called as a function. The symbol you provided getRandomNumber is not the name of a function.
Run Code Online (Sandbox Code Playgroud)
我想也许我不能在没有先创建对象的情况下在同一个CFC中引用一个函数,所以我这样做:
<cffunction name="orderItemList">
<cfscript>
LOCAL.RandomNumber = APPLICATION.AppInfo.objOrders.getRandomNumber();
return LOCAL.RandomNumber;
</cfscript>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
然后,我会收到此错误:
Either there …Run Code Online (Sandbox Code Playgroud) 如果已经回答,我会提前道歉.
我的目标是创建一个分页方案,该方案将变量发送到ColdFusion函数中的查询,该函数抓取X个元素并在我的网页上显示这些记录而不刷新它.因此,为了测试抓取HTML内容并将其显示到屏幕而不刷新的基本功能,我尝试对ColdFusion组件执行简单的AJAX调用,让它返回带有HTML内容的变量,并显示格式化的HTML在我的网页上的div标签内.这是基于我在网络上看到的前一个例子,它使用了cfajaxproxy,虽然这可能是我的问题,但我很惊讶它根本就没有做到它应该做的事情.
我有一个名为testGeneration.cfm的文件,这里是代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<!-- call the jQuery library -->
<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#loadLink").click(function(e) {
e.preventDefault();
$.ajax({
type: "GET",
url: "generateInfo.cfc?method=createHTML",
dataType: "html",
success: function(message) {
$("#mydiv").html(message);
}
});
});
});
</script>
</head>
<body>
<a href="" id="loadLink">Load Query</a>
<!-- empty div to load dynamcically generated table into -->
<div id="mydiv"></div>
</body>
Run Code Online (Sandbox Code Playgroud)
如您所见,它使用CreateHTML方法调用组件GenerateInfo.以下是generateInfo.cfc的代码:
<cfcomponent displayname="Generate HTML" output="false">
<cffunction name="createHTML" displayname="Create HTML" description="Creates HTML to output with jQuery." access="remote" …Run Code Online (Sandbox Code Playgroud) 我在CFC文件上使用Ajax.我无法从我从Ajax调用的函数中获得结果.我设置了一个调试消息(Alert()),但是看不到它.有什么建议吗?
function getDelegateChartAcct(LocFund){
alert("#Arguments.PIUniversalID#");
alert($F("DelegateFund"));
new Ajax.Request( "?method=displayDelegateChartAcct",
{
parameters : {
PIUniversalID: "#Arguments.PIUniversalID#",
PILocFund: $F("DelegateFund")
},
method : "post"
}
);
}
<cffunction name="displayDelegateChartAcct" access="remote" output="true"
returntype="void">
<CFArgument name="PIUniversalID" type="string" required="true" />
<CFArgument name="LocFund" required="true" type="String" />
<CFSET var chartacctlist = runChartAcctDelegationQuery
(#Arguments.PIUniversalID#, #Arguments.LocFund#)>
<CFContent type="text/x-javascript">
alert(“Hi”);
// delegateChartAcctList();
// $("DelegateChartAcct").
// <CFOutput query="chartacctlist">
// $("DelegateChartAcct").insert( new Element(
"option", { value : "#JSStringFormat( chart_acct )#", selected :
// "selected" } ).update( "#JSStringFormat( chart_acct )#" ) );
// </CFOutput>
</cffunction> …Run Code Online (Sandbox Code Playgroud) 当我尝试在index.cfm中触发简单的select查询时,使用Application.cfc中定义的数据源会显示错误消息.任何人都可以帮助我正确的代码序列?
错误:
变量PRIMARYDATASOURCE未定义
的Application.cfc
<cfcomponent>
<!--- Set up the application. --->
<cfscript>
this.name = ""; // app name from old cfapplication tag
this.sessionManagement = "Yes";
this.loginstorage="session";
this.setClientCookies = "Yes";
this.primarydatasource = "diet";
application.PRIMARYDATASOURCE = "diet";
</cfscript>
<cfsetting requesttimeout="100000" />
<cffunction name="onApplicationStart">
....
<cfquery datasource="#application.PRIMARYDATASOURCE#" name="getCostDetails">
select * from maimun.adCostDetails ORDER BY ID DESC
</cfquery>
....
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud) 我正在研究新系统,并且有些东西与我以前看到的不同.基本上有一个JQuery ajax调用"POST"类型和url指向.cfm页面.该.cfm页面将返回html表格.
与首席开发人员交谈后,他提到这种方法更有效率.这种方式调用.cfm我们每次拨打电话时都不会创建新实例.另一种方法是,如果我们使用.cfc并调用一个函数,每次都会创建一个新实例.我不知道屏幕背后的一切和ColdFusion的深层次.
另外一件事他提到这种方式更好,因为我们不使用任何框架.我在过去的4年里一直在使用ColdFusion,而我过去看到的是component.cfc使用特定method名称调用JQuery Ajax .返回数据并动态构建表.我想知道是否有人知道更多关于这个以及为什么.cfm可能比打电话更好.cfc.
谢谢.
cfc ×10
coldfusion ×10
ajax ×3
jquery ×3
coldfusion-9 ×1
content-type ×1
frameworks ×1
html ×1
json ×1
logging ×1
scope ×1
web-services ×1