2012-05-02 26 views
0

不確定,但這可能是PHP中的一個錯誤。 這是我的虛擬代碼。php表單不能與隱藏字段一起使用

<script language="javascript"> 
function fb_logout() { 
document.getElementById("hidden_logout_id").value 
alert(document.getElementById("hidden_logout_id").value); 
document.getElementById("form_1").submit(); 
} 
</script> 

echo "<form id=\"form_1\" action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\">"; 
echo "<input type=\"hidden\" id=\"hidden_logout_id\" name=\"hidden_logout_name\" value=\"1\"/>"; 
echo "<input type=\"text\" id=\"h_logout2\" name=\"h_logout2\" value=\"1\"/>";  
echo "</form>"; 
var_dump($_POST); 
echo "<span onclick=\"fb_logout();\">Logout</span>"; 

在做一個後槽上跨度隱藏和形式中的文本的價值沒有得到貼點擊:後續代碼var_dump($ _ POST)顯示一個空變量。但奇怪的是,如果我從表單中刪除隱藏(或者我只是將它放在表單之外),它會起作用,它會在$ _POST中傳遞表單中剩餘的輸入文本的值。 這是否與隱藏從表單外的事件修改?

任何幫助表示讚賞。

+0

_「不確定,但這可能是一個PHP中的錯誤」_Nope,是什麼讓你這麼想?你使用什麼瀏覽器?給出的例子適用於我在Chrome中。 – CodeCaster

+0

在Firefox中也適用於我。問題在別的地方。 –

+0

我在Internet Explorer和Firefox中遇到了同樣奇怪的行爲。它有時會在更改隱藏字段的名稱或ID後立即生效。但正如我在問題中說的,如果我從表單中刪除隱藏(或者我把它放在外面),它會顯示一些$ _POST數據發佈。否則它$ _POST是空的。 –

回答

2

此代碼可以幫助..

<?php 
    if(isset($_POST['hidden_logout_name'])) var_dump($_POST); 
?> 
<script language="javascript"> 
function fb_logout() {  
    alert(document.getElementById("hidden_logout_id").value); 
    document.getElementById("hidden_logout_id").value = "hidden_logout_value"; 
    document.getElementById("form_1").submit(); 
} 
</script> 

<form id="form_1" action="" method="post"> 
    <input type="hidden" id="hidden_logout_id" name="hidden_logout_name" value=""/> 
    <input type="text" id="h_logout2" name="h_logout2" value="1"/> 
</form> 
<button onclick="fb_logout();">Logout</button> 
0

認準

hidden_logout_name 

代替

hidden_logout_id 

所以你的價值是在

$_POST['hidden_logout_name'] 
1
document.getElementById("hidden_logout_id").value 

您尚未對此行執行任何操作,請將值賦予此值或將其值賦給變量。

var logout_value=document.getElementById("hidden_logout_id"); 
alert(logout_value.value); 
document.getElementById("form_1").submit(); 

願這幫助你。