【问题标题】:CakePHP - Handling urls in ajax callsCakePHP - 处理 ajax 调用中的 url
【发布时间】:2013-10-02 13:47:41
【问题描述】:

有什么更好的方法来处理在 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,这将导致一个大问题。

【问题讨论】:

    标签: javascript php jquery ajax cakephp


    【解决方案1】:

    使用

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

    会输出;

    /Users/list
    

    在js中

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我通常是这样工作的:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2012-07-20
          • 1970-01-01
          • 2013-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-10
          相关资源
          最近更新 更多