在 Kohana 3 中路由 ajax 请求?
在我的 bootstrap.php 中,我有以下代码:
// Check if ajax request
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest")
{
Route::set('ajax', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'home',
'action' => 'index',
));
}
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'home',
'action' => 'index',
));
“ajax”路线不完整。我想做的是如果请求是通过完成的。 ajax,那么 Kohana 应该在我的控制器中名为 ajax/ 的子文件夹中查找控制器。因此,如果 ajax 请求则:
http://localhost/myproject/somecontroller/someaction 路由到 ajax 子文件夹内的某个控制器。 如果没有 ajax 那么就使用“默认”路由。
In my bootstrap.php I have the following code:
// Check if ajax request
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest")
{
Route::set('ajax', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'home',
'action' => 'index',
));
}
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'home',
'action' => 'index',
));
The 'ajax' route is incomplete. What I want to do is if the request is done via. ajax, then Kohana should look for the controller in a subfolder within my controllers called ajax/. So, if ajax request then:
http://localhost/myproject/somecontroller/someaction routes to somecontroller inside the ajax subfolder. If not ajax then just use the 'default' route.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用类似这样的 lambda/callback 函数/方法:
请参阅 http://kohanaframework.org/3.2/ guide/kohana/routing 和 http://kohanaframework.org/3.2/guide/api/Route
Use a lambda/callback function/method something like this:
See http://kohanaframework.org/3.2/guide/kohana/routing and http://kohanaframework.org/3.2/guide/api/Route
试试这个:
但是,就个人而言,我会在同一个控制器中处理 AJAX 和非 AJAX 请求,使用
Request::current()->$is_ajax
来判断它是否是 AJAX 请求。 AJAX 行为可能与非 AJAX 行为没有显着差异,因此将两者保留在同一控制器中可能会有所帮助。如果您在不同的控制器中处理 AJAX 请求,最终可能会出现代码重复。Try this:
However, personally, I'd handle both AJAX and non-AJAX requests in the same controller, using
Request::current()->$is_ajax
to tell if it was an AJAX request. The AJAX behavior is probably not significantly different to the non-AJAX, so it might be beneficial to keep both in the same controller. You may end up with code duplication if you handle AJAX requests in a different controller.