gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:05:08 25 4
gpt4 key购买 nike

我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com