2012-09-22 41 views
1

我在面對POST方法時遇到了一些問題。我有一個頁面A與表格POST方法,當我提交表格它進入頁面b。檢索通過POST方法傳遞的值

現在的問題是,當我做一個刷新它 彈出一個警告,我不想來。我使用HTML和Javascript。

有什麼辦法來處理這個刷新?

我能想到的一種方式是在頁面b上動態創建一個隱藏窗體,並在字段中填充值併爲每次刷新提交隱藏窗體。

請建議,讓我知道是否有其他一些乾淨的工作。提前致謝! 基本上我在AS400平臺上使用CGIDEV2。因此,當頁面a上的輸入表單被提交時,它調用寫入頁面b的abc.pgm。 Cgidev2分段寫入html。它將寫入/ TOP部分然後/ REFRESHFORM。這些值將填入abc.pgm。

PAGE a 
    /FORM 
     <form name="input" action="abc.pgm" method="POST"> 
    Username: <input type="text" name="user"><input type="submit" value="Submit"></form> 
Page b 
    /TOP 
    ----------------- 
    -------------- 
    /REFRESHFORM 
    <form name="refreshinput" action="abc.pgm" method="POST"> 
    Username: <input type="text" name="user"><input type="submit" value="Submit"></form> 
+3

一些代碼,請 –

回答

0

如果您對提交按鈕使用單擊事件處理程序,則只需要防止對點擊進行默認操作。

$('#Submit').click(function(e){ 
    e.preventDefault(); 
    // submit the form using ajax 
    // on success go to the page B 
    ... 
} 
+0

其實這些都是舊代碼,所以不能使用AJAX ..have做到這一點與JavaScript –

+0

在形式1或refreshform? –

+0

你應該遵循Ultranaut建議的Post/Redirect/Get模式,但無論如何,最好的解決方案是使用ajax。 – Warlock

1

您試圖避免「確認表單重新提交」警報?通常的做法是使用POST/Redirect/GET模式:頁面A將表單發送到服務器,服務器處理數據,然後發送3xx重定向回給用戶,觸發頁面B的GET請求。因此,後續重新加載頁面B只是通常的演習,即沒有警報消息。

+0

網址b在網頁b中是否可見? –

+0

頁面b上的網址可以是您將其設置爲重定向的任何內容。 – ultranaut

+0

好的,謝謝!請你可以給我發送一些鏈接代碼來實現 –

0

沒有簡單的方法來避免此問題,但您可以嘗試使用XMLHttpRequest對象而不是表單。您需要編寫一些JavaScript代碼,但您的服務器代碼將保持不變。

請參閱以下documentationexample

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function Submit() 
{ 
var form = document.getElementById("data-form"); 
var xmlhttp; 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    form.innerHTML=xmlhttp.responseText; 
  } 
    } 
xmlhttp.open("POST","abc.pgm",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("userName=" + form["userName"].value + "&userPass=" + form["userPass"].value); 
} 
</script> 
</head> 
<body> 

<form id="data-form"> 
    Username: <input type="text" name="userName"> 
    Userpass: <input type="text" name="userPass"> 
    <input id="submit" onclick="Submit()" type="button" value="Submit"> 
</form> 

</body> 
</html> 
+0

謝謝!現在,如果abc.pgm指向頁面b,然後在頁面b按F5時它會再次提交此表單? –