2014-03-26 84 views
0

我正在使用一個窗體,當頁面加載時自動提交。身體標記看起來是這樣的:我想提交一個只提交一次的表單的javascript autosubmit

<body onload="submitForm()"> 

形式標籤如下所示:

<form enctype="application/x-www-form-urlencoded" action="http://remote.url.com" method="POST"> 

和JavaScript(放置在首)看起來是這樣的:

function submitForm(){ 
    document.forms[0].submit(); 
    return false; 
} 

該作品,但由於某種原因多次提交。我是JS的初學者,我可以在函數中添加什麼,以確保它只能運行一次?

+0

javascript是如何放置在頁面中的? – astex

+0

爲什麼你回到假? –

回答

2

我猜你在HTML中有一個表單標籤,但它有一個動作屬性?像這樣也許:

<form action='/somePageToGoToOnSubmit' method='POST'> 
    ... 
</form> 

沒有一個要採取的行動用戶在提交另一個頁面,表單將提交到同一個頁面(通過GET或POST取決於你的方法)。這將導致重新提交循環,除非您添加一個操作來將提交發送到其他地方,或者可能與此服務器端進行交易。

通常情況下,我傾向於將服務器配置爲通過POST處理表單提交,然後通過方法進行處理 - 並且通常會將用戶重定向到其他地方,同時具有處理GET請求的單獨方法只呈現頁面。或者是這個效果。

另外,我可以問你爲什麼立即提交表單在網頁加載? - 也許你正在努力實現的東西可能稍有不同。

+0

是的,它確實有一個動作,這就是爲什麼它會提交多次,這很奇怪。這可能是收件人的事情。我爲一家公司工作,他們必須通過他們的網絡表單與各種合作伙伴分享信息。我從我們的數據庫加載數據,然後加載5個獨立的iframe,每個iframe都帶有其中一個自動提交表單。這是一個只在內部使用的頁面,當然我明白這不是很棒的設計。 –

+0

您是否嘗試過使用Chrome等瀏覽器在JS中添加斷點並遵循流程? 這樣做可能會造成一些副作用。當所有五個幀都在播放時,它是否會執行此重定向循環,並且當只有一個iframe正在操作時它仍然會執行此操作(註釋掉其他幀)? – Antfie

+0

是的,事實上,我就是這樣測試的。當它最終被使用時,它將在iframe中,但到目前爲止我只使用這種形式。我認爲這是真的。不過謝謝你的幫忙。 –