首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认URL与Javascript相对路径

默认URL与Javascript相对路径
EN

Stack Overflow用户
提问于 2013-07-15 19:55:16
回答 1查看 269关注 0票数 1

为什么CakePHP会生成这些URL

代码语言:javascript
复制
<server>/Reporting/OnlineBanking/index/page:1

而不是

代码语言:javascript
复制
<server>/Reporting/OnlineBanking/index?page=1

例如,使用JavaScript之外的相对路径会有很多问题。

有没有改变它的选项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-16 19:05:40

使用get参数进行分页

默认情况下,CakePHP中的所有参数都是命名参数(像/foo:bar/这样的url片段)。默认情况下,这也适用于分页参数。

为了对分页参数使用get参数,您可以通过setting appropriate config来实现

代码语言:javascript
复制
public $paginate = array(
    'paramType' => 'querystring'
);

这将生成以下形式的urls:

代码语言:javascript
复制
/the/url?page=1&limit=10

而不是:

代码语言:javascript
复制
/the/url/page:1/limit:10

将urls指定为string是非常脆弱的

之前你提到过在javascript中使用像get_backend_requests这样的urls。

即使使用分页的get参数,您仍然会发现问题。这是因为即使对于“相同”的url,结果也可能是不同的:

代码语言:javascript
复制
/the/url  => /the/get_backend_requests
/the/url/ => /the/url/get_backend_requests

相反-将javascript中的urls指定为绝对urls:

代码语言:javascript
复制
$.ajax({
    type: 'POST',                               
    url: "/xyz/get_backend_requests",
    ...

如果你的应用有时(或总是)安装在子文件夹中,你可以用一个简单的函数来解决这个问题:

例如,在您的html/布局中放置:

代码语言:javascript
复制
<html>
    ...
    <script>
        function url(url) {
            return <?php 
                $base = rtrim(Router::url('/'), '/'); 
                if ($base) {
                    echo "'$base' + ";
                }
            ?>url;
        }
    </script>

它将输出:

代码语言:javascript
复制
<html>
    ...
    <script>
        function url(url) {
            return '/subfolder' + url;
        }
    </script>


$.ajax({
    type: 'POST',                               
    url: url("/xyz/get_backend_requests"), // becomes the string "/subfolder/xyz/get_backend_requests"
    ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17653674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档