提问者:小点点

通过jQuery ajax使用Coldfusion删除文件


我正在尝试删除图像文件后,填充了关于文件的数据在一个模式。

我的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结构

有什么想法吗?


共1个答案

匿名用户

根据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);
        }
    });
});

看起来还行!