簡體   English   中英

公式發布后重新加載框架

[英]Reload frame after formular POST

我在使用Firefox 31.0的HTML網頁中遇到以下情況。 一個包含框架的框架集,以及一個執行評估/功能的按鈕。 我的問題是我想在提交POST表單后重新加載其中一個框架。 有關框架的總體布局,請參見圖片。

在此處輸入圖片說明

框架“編輯”中的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();

(重新)加載框架“基本”及其子框架集,但POST數據似乎未到達服務器。 似乎是“ click()”執行中斷了先前的POST。 服務器未回復帶有firebug show的POST請求的網絡跟蹤,但隨后的“ click()”請求得到了正確管理。

和為

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

服務器上的處理發生了,但是沒有重新加載框架(根本沒有),並且框架保持不變。

top.base.location.reload();

這是一個主要問題,因為它將再次發送POST數據,不適用於應用程序邏輯。

我已經嘗試過這些,但可能沒有人知道如何處理。

謝謝。

更新 :我已經找到了通過使用setTimeout這樣的問題的可能的解決方案,如下所示:

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

這使客戶端/服務器有時間來響應POST並可以正常工作,但是,例如,它似乎有點駭人聽聞。 在重載情況下會發生什么情況,足夠200ms嗎?等等。所以我想我的問題仍然懸而未決。

我建議像此答案中所述使用jQuery提交表單: https : //stackoverflow.com/a/1200312/1321810

這樣,您可以附加一個處理程序,該處理程序可以在帖子完成時立即重新加載頁面,而不必等待1000毫秒

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM