我有一个显示'item'属性的表单。用户可以选择将文件/附件上传到此“项目”。目前,在具有“测试”类的div中显示该项目的现有附件。用户使用“附加”按钮将文件附加到他们想要更新的项目。在使用“更新”按钮单击事件(这是我想要的)提交表单之前,文件永远不会实际附加。表单提交是对iframe的ajax提交。我想使用jquery加载一个包含查询的coldfusion页面,用于查找当前附加的项目到我的'testing'div中。我最初的方法是在表单提交后使用jquery的加载函数:
//In the JS file, the selected item is used in the CF query
form.submit();
$('.testing').load('itemAttachments.cfm?itemID=' + selectedItem);
我知道我的coldufusion查询有效,因为它是'testing'div中的cfinclude,并且页面最初加载了正确的信息。在表单提交上,jquery加载返回cf页面,但是具有相同的数据而不是列出的新附件。刷新页面时,数据显示正确(即列出新附件)。这让我相信一切正常,但是在Oracle处理查询之前,jquery负载正在发生。
这是对的吗?如果是这样,我该如何解决这个问题呢?感谢。
修改 表单提交给具有隐藏iframe的目标。问题是表单提交和jquery .load()都使用相同的页面itemAttachments。但是jquery load()在表单提交之前首先得到结果,即使.load在代码中的表单提交之后。
答案 0 :(得分:1)
iframe的这个技巧为你提供了2个并行请求,也许.load赢得了比赛。 如果您已经使用了jquery,我建议您也应该使用jquery发布并执行load(或者甚至只使用ajax响应)。
如果由于某种原因必须使用iframe hack,那么您需要将事件附加到iframe。 例如,您可以在iframe重新加载时启动它:
$('#iframe').load(function(evt){
//do some checks
$('.testing').load('itemAttachments.cfm?itemID=' + selectedItem);
});
答案 1 :(得分:0)
我将jquery加载的脚本添加到coldfusion处理页面。我给了它一个window.parent.document范围,即:
<SCRIPT LANGUAGE="JAVASCRIPT">
$(document).ready(function(){
$('.testing', window.parent.document).load('processForm.cfm?itemID=' + <cfoutput>#itemID#</cfoutput);
});
</SCRIPT>
这很有用。