我正在写一个应用程序使用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