我认为我有一般的路由问题。
看看我得到了什么。我有一个带有Paginator的页面。当我进入页面时,我有一个像“host / OnlineBanking / session_details / session_id:xxxxxx”的网址。
如果我使用paginator,我会得到类似“host / OnlineBanking / session_details / session_id:xxxxxx / page:2”
仍然很容易理解。
但问题是我在这里使用的JS。我有一个按钮,后面有一个点击事件。
$.ajax({
type: 'POST',
url: "../get_backend_requests",
data: "request_id="+request_id,
dataType: "html",
success :function(html){
element.append(html);
}
});
所以问题是,如果我像我那样定义URL,那么我首先使用我发布的第一个URL工作。但是带有page-parameter的第二个URL会渲染完整的Layout而没有我想要的那些数据。在我从JS调用的动作中,我将autoRender值设置为false,因此无法解决问题 我使用Firebug来弄清楚发生了什么,问题是JS只是附加动作来调用前一个。因此URL看起来像“OnlineBanking / session_details / get_backend_requests”。 所以我可以通过在ajax中使用这个“url:”../../get_backend_requests“解决问题,但是没有/ page:2的URL不再工作了。因为他试图使用和操作作为一个控制器。
任何人都可以给我一个提示来解决这个问题。
非常感谢!
答案 0 :(得分:0)
最好在bootstrap.php中声明一个常量
define('HTTP_HOST', "http://" . $_SERVER['HTTP_HOST'].'/');
define('SITE_URL', HTTP_HOST.'your_project_dir_name_if_any/');
并使用如下:
$.ajax({
type: 'POST',
url: "<?php echo SITE_URL.'controller_name/get_backend_requests';?>",
data: "request_id="+request_id,
dataType: "html",
success :function(html){
element.append(html);
}
});