CakePHP - 处理 ajax 调用中的 url


CakePHP - Handling urls in ajax calls

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

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

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

然后在我的js文件中,我将URL硬编码到ajax调用,如下所示:

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

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

我通常这样工作:

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

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

然后在我的javascript文件中,我这样做:

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

使用

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

将输出;

/Users/list

在 js 中

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

如果你想以JSON格式显示应用程序的数据,我认为你正在反对CakePHP的约定。查看 CakePHP 说明书中关于 JSON 和 XML 视图的条目。