CakePHP - 处理ajax调用中的URL

时间:2013-09-26 14:20:08

标签: javascript php jquery ajax cakephp

在webroot中存在的javascript文件中进行的ajax调用中处理url的更好方法是什么?因此,不是由PHP解释?

我使用CakePHP和require.js,因此不会将javascript代码直接放在视图中。我发现的唯一方法是在布局中声明一个接收webroot值的变量,如下所示:

<script>var webroot = "<?php echo this->Html->url('/') ?>" </script>

然后在我的js文件中,我将url硬编码为这样的ajax调用:

$.getJSON(webroot + 'users/list', function(){ ... } );

但如果Routes文件中有更改,则无法解决问题。我通常在完成项目后将路由更改为更友好,如果我在js文件中引用了许多ajax调用或url,这将导致一个大问题。

3 个答案:

答案 0 :(得分:3)

我通常以这种方式工作:

在我的布局标题中,我在添加任何其他javascript之前添加以下内容:

<script type="text/javascript">var baseUrl = '<?php echo $this->base; ?>';</script>

然后在我的javascript文件中执行此操作:

$.post("http://"+ document.domain + baseUrl +"/controller/action.json");

答案 1 :(得分:1)

使用

echo Router::url(array('controller' => 'Users', 'action' => 'list'));

将输出;

/Users/list

在js

$.post({url : "<?php echo Router::url(array('controller' => 'Users', 'action' => 'list')); ?>"})

答案 2 :(得分:0)

如果您想要以JSON格式显示应用程序的数据,我认为您正在针对CakePHP的约定。看看CakePHP cookbook entry on JSON and XML views