2014-07-02 189 views
0

我使用PHP。

我有一個表格,並提交後,我希望它去,並在最後一個$ _ POST變量的URL(作爲$ _GET),像這樣:

http://example.com/page.php?my_key=my_value 

的問題是,「MY_VALUE 「是用表單創建的,意味着在表單發佈之前它不知道它。有任何想法嗎?

<form method="post" action="/page.php?my_key="> 
    <input type="text" value="my_value" name="my_key"> 
    <input type="submit" name="submitter"> 
</form> 
+1

你不能這樣做 - 表單必須是全部或全部發布。但是,您可以修改操作屬性。 –

+0

您可能會在PHP中使用'$ _REQUEST ['var'];''。 –

回答

3

在PHP發送表單後,您可以簡單地將302重定向到您想要的url。

在PHP文件page.php文件(或者是前端控制器其他文件),你可以簡單的做:

if (isset($_POST['my_key'])) { 
    header('Location: http://'.$_SERVER["SERVER_NAME"].$_SERVER['REQUEST_URI'].$_POST['my_key'],true,302); 
} 
+0

這是一個解決方法,但我確實喜歡它。 –

+1

我已經使用過它至少兩次,最好的是你不應該擔心JavaScript禁用的用戶 –

1

使用JavaScript來改變action屬性。

I.E.使用jQuery:

jQuery('form').submit(function(eve) { 
    var action = eve.target.attr('action'); 
    action = action + eve.target.find('input[name="my_key"]').val(); 
    eve.target.attr('action',action); 
}); 

有點粗糙,需要檢查和調試。

1

您無法通過URL傳遞一個POST值: 你可以做的是這樣的:

<form action="/page.php?my_key=" name="pre" method="POST"> 
    <input type="hidden" name="my_key" value="my_value"> 
</form> 
<script type="text/javascript"> 
    setTimeout("document.forms['pre'].submit();",0); 
</script> 

現在這將作爲一個鏈接,並會自動提交表單作爲POST。