我发现这个问题问了previously,但它包含了糟糕的例子,没有真正的答案,所以我在这里再问一次。首先是代码:
HTML:
<td><input type="button" name="clear_#get_images.prdt_img_rel_ID#_cache" value="Clear Cache" onClick="clearCache('#get_images.images_name#');"/></td>代理:
<cfajaxproxy cfc="/cfc/cloudfiles" jsclassname="proxy">Javascript:
<script type="text/javascript">
var proxy = new proxy();
function clearCache( objectName ) {
proxy.setCallbackHandler( purgeResultsHandler );
proxy.setErrorHandler( myErrorHandler );
alert(objectName);
proxy.purgeItemDirectly( objectName );
}
var purgeResultsHandler = function ( res ) {
alert( res );
}
var myErrorHandler = function(statusCode, statusMsg) {
alert('Status: ' + statusCode + ', ' + statusMsg);
}
</script>CFC:
<cffunction name="purgeItemDirectly" access="remote" returntype="string" output="false">
<cfargument name="container" type="string" required="false" default="content" />
<cfargument name="objectName" required="true">
<cfset var res = '' />
<cfhttp method="DELETE" charset="utf-8" url="#variables.cdn_url#/#_encodeContainerName(arguments.container)#/#_encodeObjectName(arguments.objectName)#">
<cfhttpparam type="header" name="X-Auth-Token" value="#variables.auth_token#" />
<cfhttpparam type="header" name="X-Purge-Email" value="#Application.debuggingEmail#" />
</cfhttp>
<cfswitch expression="#ListFirst(cfhttp.statusCode, " ")#">
... code to iterate through responses ...
</cfswitch>
<cfreturn res >
</cffunction>如您所见,我有一个检查JS中的objectName的警报。此时,objectName确实存在。然而,一旦我进入cfc中的函数,它就不存在了。我插入了文本值以返回到cfc中,所以我知道它被正确调用了,我只是不能向它传递一个值(无论是从一个变量还是一个普通字符串)。
提前感谢您的帮助。
发布于 2011-06-06 22:36:05
在javascript中,调用函数时只有一个参数(proxy.purgeItemDirectly( objectName ))。您的CFC定义了两个参数:container和objectName。因此,您的javascript将您的objectname参数传递给了CFC的容器参数。您需要确保同时传入两个参数,或者更改CFC中参数的顺序,以匹配您期望从JavaScript调用中得到的结果。
发布于 2011-09-09 06:10:22
我想再增加一件事,特别是如果你支持IE浏览器,你在下面一行的代码将在IE上中断并显示标准错误消息(这是没有用的)
var proxy = new proxy();确保将var名称更改为其他名称,如下所示:
var proxy_ = new proxy();我在尝试解决自己的问题时遇到了你的问题,我发现下面的参考资料很有用
参考:http://www.coldfusionjedi.com/index.cfm/2008/7/1/IE-issue-with-AjaxProxy
https://stackoverflow.com/questions/6117865
复制相似问题