我有一个循环浏览文件夹的CFC并删除所述文件夹中的所有文件,在上传和保存图像后进行“清理”功能。在同一个CFC中,我有一个更新数据库中文本的函数。 Bot函数通过jQuery帖子触发。 text函数向我的jQuery函数返回一些确认,没问题。
但是,清理功能不会将数据返回到我的页面。任何人都可以在我的编码中看到一个明显的错误,它会阻止清理功能将数据返回到我的页面并触发确认吗?
我知道CFC正在运行,因为文件已从文件夹中删除,但它根本没有返回“有效”响应。
这是jQuery:
function rebinder(deleteImages){
$('.editingFormField').attr('value', '');
if ($('.edit').hasClass('selected')){
$('.edit').removeClass('selected');
}
$('#imagePreview').attr('src', '');
$('#et').dialog('close');
$('#ei').dialog('close');
if (deleteImages == 'yes'){
$.post("cfc/engine.cfc?method=clearImages&returnformat=json",
{},
function(ret) {
//Handle the result
alert(ret + "the Return");
if(ret == "true") {
} else {
alert("There was an error in the processing (files_no_del)");
}
});
$.post("cfc/engine.cfc?method=clearThumbs&returnformat=json",
{},
function(ret2) {
//Handle the result
if(ret2 == "true") {
} else {
alert("There was an error in the processing (thumbs_no_del)");
}
});
}
location.reload();
};
CFC:
<cffunction name="clearImages" access="remote" output="false" returntype="boolean">
<cfset var deleteConfirm = "true">
<!--- Read Holding Directory --->
<cfdirectory
action="list"
directory="#destdir#"
recurse="true"
listinfo="name"
name="qFile"
/>
<!--- Loop through file query and delete files --->
<cfloop query="qFile">
<cffile action="delete" file="#destdir#/#qFile.name#">
</cfloop>
<cfreturn deleteConfirm>
</cffunction>
答案 0 :(得分:1)
代码完全正常,除了location.reload();
的位置一旦我将reload命令移动到我的代码部分,当它从CFC回来时触发,它工作正常。 Nick Craver在这篇文章中提到了这个问题:jQuery window reload doesn't allow to work post。
值得一提的是Tony和Ken的评论也有助于诊断问题。运行帖子URL确实证实了AJAX魔法按计划发生。
以下是修订后的代码:
function rebinder(deleteImages){
$('.editingFormField').attr('value', '');
if ($('.edit').hasClass('selected')){
$('.edit').removeClass('selected');
}
$('#et').dialog('close');
$('#ei').dialog('close');
$('#imagePreview').attr('src', '');
if (deleteImages == 'yes'){
$.post("cfc/engine.cfc?method=clearImages&returnformat=json",
{},
function(ret) {
//Handle the result
if(ret == "true") {
location.reload();
} else {
alert("There was an error in the processing (files_no_del)");
}
});
} else {
location.reload();
}
};
我所做的唯一真正的改变是巩固我的CFC。我没有运行两种方法清理掉两个文件夹,而是将其归结为一个清理文件夹的“清理”方法。
答案 1 :(得分:0)
我刚刚浏览了你的代码,你可以使用$ .getJSON()函数来调用CFC,你可以提到你想要调用的方法,并可以选择将参数传递给方法。
$.getJSON('Some.cfc', {method: 'fetchImapStartMessages', arg1: 'Hello',
returnformat: 'json' },
function(returndata) {
//some code here that renders the data
}
});
并确保在CFC方法中设置属性returnformat =“JSON”access =“remote”。当从CFC方法返回数据时,请确保使用serializeJSON(returndata)。这有帮助吗?