1

我有一个显示“项目”属性的表单。用户可以选择将文件/附件上传到该“项目”。目前,在具有“测试”类的 div 中显示该项目的现有附件。用户使用“附加”按钮将文件附加到他们要更新的项目。在使用“更新”按钮单击事件(这是我想要的)提交表单之前,这些文件永远不会真正附加。表单提交是一个 ajax 提交到 iframe。我想使用 jquery 将包含查询的coldfusion页面加载到我的“测试”div中,以查找当前附加的项目。我最初的方法是在表单提交后使用 jquery 的加载功能:

//In the JS file, the selected item is used in the CF query
form.submit();
$('.testing').load('itemAttachments.cfm?itemID=' + selectedItem);

我知道我的coldufusion 查询有效,因为它是“测试” div 中的cfinclude,并且页面最初加载了正确的信息。在表单提交上,jquery 加载返回 cf 页面,但具有相同的数据,而不是列出的新附件。当我刷新页面时,数据会正确显示(即列出的新附件)。这使我相信一切正常,但是在 Oracle 可以处理查询之前就发生了 jquery 负载。

这个对吗?如果是这样,我该如何解决这个问题?谢谢。

编辑 表单提交到带有隐藏 iframe 的目标。问题是表单提交和 jquery .load() 都使用相同的页面 itemAttachments。但是 jquery load() 在表单提交之前首先获取结果,即使 .load 在代码中的表单提交之后也是如此。

4

2 回答 2

1

这个使用 iframe 的技巧给你 2 个并行请求,也许 .load 会赢得比赛。如果您已经在使用 jquery,我建议您也应该使用 jquery 发布并执行加载(甚至只使用 ajax 响应)。

如果您出于某种原因必须使用 iframe hack,那么您需要将事件附加到 iframe。例如,您可以在 iframe 重新加载时启动它:

$('#iframe').load(function(evt){
  //do some checks
  $('.testing').load('itemAttachments.cfm?itemID=' + selectedItem);
});
于 2012-08-11T10:42:28.060 回答
0

我将 jquery 加载的脚本添加到了冷融合处理页面。我给了它一个 window.parent.document 的范围,即:

<SCRIPT LANGUAGE="JAVASCRIPT">
    $(document).ready(function(){
        $('.testing', window.parent.document).load('processForm.cfm?itemID=' + <cfoutput>#itemID#</cfoutput);
    });
</SCRIPT>

这行得通。

于 2012-08-15T15:47:13.510 回答