2011-07-18 51 views
0

我正在處理一些HTML表單,我只想知道在action屬性中使用URL參數是否可以,即使方法屬性是POST?HTTP POST請求中的URL參數是否正常?

<form action="index.php?somefield=someval" method="post"> 
    <input name="anotherfield" value="anothervalue" type="text" /> 
    <input type="submit" /> 
</form> 

好了,這工作得很好,我可以讓我的回傳頁面中的所有領域,他們的價值觀,但我想知道如果我做這個打破一些規則,標準還是什麼?請,如果可以的話,展示一些可以證明它沒問題的資源,因爲我在W3.org找不到它。

+0

是的,它是確定這樣做 – Ibu

回答

1

作爲規格RFC1866 section 8.2.3指出:

如果使用形式的處理相關聯的服務具有側 的效果(例如,數據庫或訂閱一個 服務的修改) ,該方法應該是'POST'。

要處理表單的操作URL是HTTP URL且其方法爲 'POST',用戶代理將使用動作URI和'application/x-www'類型的消息主體執行HTTP POST事務-type- urlencoded'格式如上。用戶代理應顯示來自HTTP POST交互的 響應,就像它將顯示來自上述HTTP GET的 響應一樣。

當發送POST請求時,表單數據實際上是在請求的主體中發送的,而不是在頭中。所以請求URL(表單的action)與請求主體不同。

在後臺發送到服務器的數據是這樣的:

POST /path/script.php?somefield=somevar HTTP/1.1 
User-Agent: User-Agent-String/1.0 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 32 

home=Cosby&favorite+flavor=flies 
+0

所以你認爲使用XMLHttpRequest時是一樣的? – dpp

+0

@Domanokz - 是的。 –

+0

我不明白,我會使用'POST'作爲方法,不會得到......那是怎麼回事?它仍然不可靠嗎? '處理一個表單的動作URL是一個HTTP URL,其方法是'GET'' – dpp

0

只要你的代碼是一致的,你應該沒問題。如果你有理由,只分離參數,然後將其記錄下來,以便清楚爲什麼後來出現任何人。

當然要測試它以確保它能正常工作。它可能不是標準的,但如果你有某種原因,沒有什麼可說的,你不能這樣做。

0

它可以工作,但有時會令人困惑。如果您somefield = someval是有關您的形式,它可能會更好做:

<form action="index.php" method="POST"> 
    <input name="somefield" value="someval" type="hidden" /> 
    <input name="anotherfield" value="anothervalue" type="text" /> 
    <input type="submit" /> 
</form> 

但是如果你的somefield = someval是從形式上不相關的,那麼你應該把它作爲獲得如此它不會成爲的一部分你的表單數據。

-1

您可以使用$ _REQUEST [「name」]從get或post模式獲取值。 Check out更多細節

+0

對不起,你錯過了話題。 – dpp