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