2011-07-12 49 views
1

下面的表單在5秒後使用quto javascript提交時不包含表單變量。自動提交的表單不包含表單變量

正常提交工作正常。


<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Test</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 

<SCRIPT LANGUAGE="JavaScript"><!-- 
setTimeout('document.test.submit()',5000); 
//--></SCRIPT> 

</head> 
<body> 
<form name="test" id="form1" method="post" action="auto2.php"> 
    <p> 
    <INPUT TYPE=checkbox NAME="test" VALUE="option1"> Option1 
    <INPUT TYPE=checkbox NAME="test" VALUE="option2"> Option2 
    <INPUT TYPE=checkbox NAME="test" VALUE="option3"> Option3 
    </p> 
    <p><input type="submit" name="submit_test" value="Submit_test" /> 
&nbsp; </p> 
</form> 
</body> 
</html> 
--------------------------------------------------------------- 

output page: 

-------------------------------------------------------------- 
<?php 

if(isset($_POST['submit_test'])){ 
$variable=$_POST['test']; 

echo $variable; 

} 

?> 

任何幫助,高度讚賞..謝謝。

+0

請向我們展示表單的代碼以及如何提交。 – phant0m

+1

也許用戶根本沒有時間檢查其中一個複選框? –

+0

我剛剛再次編輯它。現在可見。 – Chinnappa

回答

5

您正在測試的submit_test按鈕值是否設置:

if(isset($_POST['submit_test'])){ 

自動提交表單不會設置該值,因此您的測試失敗。

您應該測試一些其他表單域,如隱藏的元素。

+0

嘗試使用隱藏的元素。沒有改變,當我單擊提交按鈕時,表單工作絕對正常..但不是當它使用Javascript代碼自動提交時。 謝謝你的嘗試。 – Chinnappa

+0

@Chinnappa不,你的*測試*不會觸發。嘗試刪除它。它會工作。 –

+0

謝謝Nalum和Pekka對我的耐心,我花了一段時間才明白。 我有一個解決方案:) – Chinnappa

2

除非複選框被選中,你不會得到任何響應(空白或其他)

你應該擁有的反而是

<input type=hidden name="test" value=""> 
<INPUT TYPE=checkbox NAME="test" VALUE="option1"> Option1 
<INPUT TYPE=checkbox NAME="test" VALUE="option2"> Option2 
<INPUT TYPE=checkbox NAME="test" VALUE="option3"> Option3 

這樣,當您發佈的形式,你獲得一個默認值

+0

添加了一個隱藏表單字段,如下所示: 輸出仍爲空。 var_dump不顯示任何內容。 謝謝。 – Chinnappa

0

+1 Pekka的回答。

如果您執行以下操作,它將檢查頁面是否已發佈到,而不需要在帖子中設置變量。

if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... } 

您應該還可能進行某種形式的驗證以確保它來自您預期的位置。