我正在尝试删除图像文件后,填充了关于文件的数据在一个模式。
我的jQuery如下所示:
const deleteMedia = () => {
const url = '../../includes/delete-media.cfc?method=deleteMedia';
$(document).on('click', '.confirm-delete', () => {
const fileName = $('.modal-wrapper').find('.file-name').text();
$.ajax({
url,
type: 'POST',
data: 'fileName=' + fileName,
dataType: 'json',
success(data) {
console.log(data);
},
error(status) {
console.log(status.statusText);
}
});
return false;
});
};
export default deleteMedia;
和我的Coldfusion文件delete-media.cfc
:
<cffunction name="deleteMedia" access="remote" returnType="any" returnformat="json">
<cfargument name="fileName" >
<cfset requestBody = toString( getHttpRequestData().content ) />
<!--- Double-check to make sure it's a JSON value. --->
<cfif isJSON( requestBody )>
<cfset VARIABLES.DeleteFileName = deserializeJSON( requestBody )>
<cffile
action = "delete"
file = "C:\pathToSite\img\#variables.DeleteFileName#"
>
<cfdump var="#variables.DeleteFileName#">
</cfif>
</cffunction>
这是在我签入网络面板时将filename=filename
作为数据发送,并返回一个200,尽管我看不到cfdump的内容。
我对FE还行,对CF不是那么热,我的猜测是我的CF过于复杂,但也没有做我希望它能做的事情。我确实试着参考了我以前写的一些东西,再加上下面这个:
如何使用Ajax将Javascript变量传递给ColdFusion?
还有这个:
通过JQuery传递和返回ColdFusion结构
有什么想法吗?
根据Redtopia的评论,我创建了以下内容:
<cfset requestBody = toString( getHttpRequestData().content ) />
<!--- Double-check to make sure fileName exists. --->
<cfif len(requestBody)>
<cfset deleteFileName = requestBody.split("=")[2] />
<cfoutput>#deleteFileName#</cfoutput>
<cffile
action = "delete"
file = "C:\pathToSite\img\#deleteFileName#"
>
<cfelse>
<cfoutput>fileName not correct</cfoutput>
</cfif>
然后,在我的ajax调用中,我删除了数据类型JSON。
$(document).on('click', '.confirm-delete', () => {
const fileName = $('.modal-wrapper').find('.file-name').text();
$.ajax({
url,
type: 'POST',
data: 'fileName=' + fileName,
success(data) {
console.log(data);
hideOverlay();
},
error(status) {
console.log(status.statusText);
}
});
});
看起来还行!