2011-07-18 51 views
3

我有一些jQuery發送數據到一個AddComment.php頁面。數據是一個用戶ID(可以通過會話獲得),一個項目ID和文本形式下的評論。是否應該通過HTTP-POST發送所有數據?

在這種情況下,是否應通過POST發送所有數據?有沒有可能發現GET和POST混合的情況?

+2

您不妨將所有內容作爲'POST'發送。我唯一的建議是,如果你可以從會話中獲得用戶ID,那麼這樣做比它依賴用戶輸入更安全(用戶可以改變它)。 –

回答

4

再去讀RFC 2616

有這對緩存和日誌記錄了很大的影響與GET和POST相關的非常具體的語義。

在你的例子中,要添加的數據應該在POST中發送。是否應通過POST或GET變量發送對被評論項目的引用是有爭議的。 (你可以使用查詢字符串發佈到URL,任何有能力的網頁語言應該能夠區分通過兩種方法發送的相同變量名)

GET和POST應該混合的更透明的例子是當POST到一個前端控制器 - 在這裏相同的路徑被各種不同的功能位使用(如果你喜歡網頁)。 GET操作中的查詢指示調用的特定位功能。如果將選擇標準移入POST,則必須滿足前端控制器中的兩種方案,並且會丟失日誌文件中功能的解析。

2

它應該通過POST發送,主要是因爲評論可能超過Web瀏覽器將訪問的URL的長度。它也應該通過POST發送,因爲這個表單創建或修改數據,這就是慣例。例如,搜索蜘蛛不會發出POST請求,以避免這樣做。

您不能混用GET和POST。一個HTTP請求只有一種方法。

+3

You _can_ **混合** GET和POST。 –

+0

我不同意:你可以混合POST和GET –

+0

取決於你的意思。在PHP中,Querystrings被傳遞給數組$ _GET。在請求後使用querystrings是沒有問題的。 $ _GET和$ _POST將包含內容。 –

1

其實我覺得,如果你這樣做:

var id= $('#id').val(); 
var itemid= $('#itemid').val(); 
var comment= $('#comment').val(); 
var url = 'AddComment.php?id='+id; 
var data = { itemid: itemid, comment: comment } 
$.post(url, data, successFunction); 

您的itemId將THROU POST和ID通過GET和PHP會認識到它被送到(我有時會做,使用的形式,但不是通過行動AJAX)。

順便說一句 - 爲什麼你需要這個?爲什麼不通過POST發送一切?

+0

「順便說一句 - 爲什麼你需要這個?爲什麼不通過POST發送所有內容?」我的基本經驗法則是在請求涉及將某些內容寫入數據庫時​​使用POST。但是,我一直在想,如果有什麼會證明GET/POST hybriding。所以,我有興趣知道如何/爲什麼通過GET發送一個ID :) –

+0

好吧,其實我經常這樣做(混合POST/GET),thanx到symcbean我也有一些背景介紹了這個問題! :) –

相關問題