问题描述
|
我发现之前曾问过这个问题,但其中包含错误的示例,没有真实答案,因此我在这里再次提出问题。首先是代码:
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>
氟氯化碳:
<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中的cffunction,它就不存在。我已经插入了文本值以返回到cfc中,所以我知道它已被正确调用,我根本无法将值传递给它(无论是来自变量还是纯字符串)。
在此先感谢您的帮助。
解决方法
在您的JavaScript中,您正在使用单个参数(
proxy.purgeItemDirectly( objectName )
)调用函数。您的CFC定义了两个参数:container
和objectName
。因此,您的JavaScript会将objectname参数传递到CFC的容器参数中。您需要确保同时传入两个参数,或者更改CFC中参数的顺序以匹配您对JavaScript调用的期望。
,如果您支持IE浏览器,我想再添加1件事
您下一行中的代码将在IE上中断,并显示标准错误消息(这没有用)
var proxy = new proxy();
确保将var名称更改为其他名称,例如:
var proxy_ = new proxy();
我在尝试解决自己的问题时遇到了您的问题,我发现以下参考资料很有用
参考:http://www.coldfusionjedi.com/index.cfm/2008/7/1/IE-issue-with-AjaxProxy