我正在寫一個應用程序使用PHP的Phalcon框架,我必須實現該功能以允許用戶在彼此的牆上寫消息。所以使用jQuery我會寫:我應該在哪裏發送POST請求?
function postMessage() {
var message = $("#messageBox").val().trim().replace(/\n/g, '<br/>');
if(message) {
$.post("// request handler", {msg: message, wall: {{ user.id }},
writer: {{ session.get('user')['id'] }})
.done(function() {
$("#messageBox").val('');
alert("Message posted");
})
.fail(function() {
alert("Error posting message, please try again");
});
}
}
而且這個腳本將位於頁面domain.com/user/foobar
我的問題是(或者說在哪裏)應我的請求處理程序是什麼。我已經想了一下,問我的朋友,有三個選項上前:(出 domain.com/user/foobar)
- 張貼到相同的URL上面的腳本是
- 發佈到另一個URL哪些路由到 在相同的控制器所選擇另一動作1(實施例 domain.com/postmessage。這兩種選項1和2是在同一 控制器,但它們是不同的動作)
- 投遞到一個API網址(例如。api.domain.com)
有些職業選手我想分別爲:
- 兩個選項1和2可以訪問會話變量,這樣我就可以檢查 如果用戶登錄或沒有。使用選項3,我不能,但我可以 (不現實),希望沒有人試圖濫用系統並沒有張貼 消息使用Fiddler或東西被記錄。
- 選項2比選項1
- 清潔了一下選項2和3都提供中央請求處理程序,所以如果我想 實施牆上書寫系統在同一消息,我只會 必須複製jQuery代碼,並把它放在新的視圖或頁面。 使用選項1我必須將代碼從用戶控制器複製和 repaste入控制器爲每個新頁。
一些缺點我認爲是:
- 選項2意味着我有更多的路由添加到我的路由器。這使得 路由更加複雜。 (也許慢???)
(例
// Option 1
$router->add('/user/{id}',
array(
'controller' => 'user',
'action' => 'show'
)
);
// Option 2
$router->add('/user/post/{id}',
array(
'controller' => 'user',
'action' => 'writeMessage'
)
);
)
哪種方式,推薦和使用?
謝謝回答我的問題。雖然你首先做了回答,但我必須給出另一個答案的最佳答案,因爲它提供了使用額外參數處理所有POST請求的單一路由的想法,並且還向我介紹了隨機數的概念。但是,我也很喜歡你的回答,並且感謝你不要讓我陷入期望我的用戶無所作爲的陷阱。祝你有美好的一天! – Laplace 2014-12-03 18:43:11