1

处理在 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,这将导致一个大问题。

4

3 回答 3

3

我通常这样工作:

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

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

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

$.post("http://"+ document.domain + baseUrl +"/controller/action.json");
于 2013-09-26T14:26:20.297 回答
1

利用

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

会输出;

/Users/list

在js中

$.post({url : "<?php echo Router::url(array('controller' => 'Users', 'action' => 'list')); ?>"})
于 2016-07-23T08:30:36.553 回答
0

如果您想以 JSON 格式显示应用程序的数据,我认为您正在违反 CakePHP 的约定。查看关于 JSON 和 XML 视图的 CakePHP 食谱条目

于 2013-09-26T14:38:30.333 回答