javascript - 公式 POST 后重新加载框架

标签 javascript html dom

我使用 Firefox 31.0 在 HTML 网页中遇到以下情况。包含框架的框架集和执行某些评估/功能的按钮。我的问题是我想在提交 POST 表单后重新加载其中一个框架。请参阅图片了解框架的总体布局。

enter image description here

“编辑”框架中的 HTML 表单如下所示:

<form name="edit_this" id="edit_this" action="http://example.com" method="post">
    <input type="hidden" name="fnc" value="" id="fnc">
</form>

按钮 HTML 如下所示:

<button onclick="process('uninstall');">Uninstall All Modules</button>
<!-- this line is used to try a javascript reload in the function below--> 
<a id="reload" target="base" href="http://example.com" />

调用的 JavaScript 函数如下所示:

 function process(fnc) {
        document.getElementById('fnc').value = fnc;
        document.getElementById('edit_this').submit();

        // none of the following work
        document.getElementById('reload').click();
        top.base.src="http://example.com";
        top.base.location.reload();
    }

由于某种原因,加载框架的所有三种方式都失败了,例如

document.getElementById('reload').click();

(重新)加载框架“base”及其子框架集,但 POST 数据似乎未到达服务器。看来“click()”执行中断了之前的 POST。 Firebug 的网络跟踪显示服务器仍未回复 POST 请求,但后续的“click()”请求得到了正确管理。

top.base.src="http://example.com";

服务器上的处理发生了,但框架没有重新加载(根本)并且保持不变。

top.base.location.reload();

这是一个主要问题,因为它将再次发送 POST 数据,这不适用于应用程序逻辑。

我已经在没有飞机的情况下尝试过这些,也许有人知道如何处理它。

谢谢。

更新:我通过使用 setTimeout 找到了问题的可能解决方案,如下所示:

setTimeout(function(){document.getElementById('reload').click();}, 200);

这给出了客户端/服务器响应 POST 的时间并且工作正常,但它看起来有点 hackish,例如。在重负载场景下发生了什么,200ms 足够吗?等等...所以我想我的问题仍然悬而未决。

最佳答案

我建议使用 jQuery 提交表单,如本答案所述: https://stackoverflow.com/a/1200312/1321810

通过这样做,您可以附加一个处理程序,该处理程序可以在帖子完成时重新加载页面,而不必等待 1000 毫秒

关于javascript - 公式 POST 后重新加载框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25220231/

相关文章:

javascript - 可调整大小导致其下方的其他元素移动

javascript - 编辑 Google 图表类别过滤器

命名时的 Javascript/HTML : Using id vs. 类

javascript - meteor 从复选框 switchChange 中检索真/假值

javascript - 我应该在 html 中插入什么以便在代码验证器中可以使用?

javascript - 根据选择选项隐藏/显示多个文本字段

javascript - 该脚本在 IE 中不起作用。我该如何修复它?

html - 如何去掉navbar logo和navbar menu之间的空格和navbar logo后面的文字

javascript - 将函数与链接连接起来

javascript - 使用 javascript 仅更改表格颜色