用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5279|回复: 13
收起左侧

[HELP] 关于添加后缀的问题

[复制链接]
发表于 2009-11-18 22:39:41 | 显示全部楼层 |阅读模式
我在config里面设置了
$config['url_suffix'] = ".html";

之后,我用了jquery 的Ajax, 在控制器中有一句代码为

        $data['jquery'] = '
        $("input[name=\'delete\']").click(function(){
           var status = $(this).val();
           location.href = "'.site_url('buy/delete').'/" + status;
        })';
        
        $this->load->view('product/view',$data);

也就是说,点击 一个name为delete的input框,之后就会返回到buy/delete;

但是因为我设置了后缀.html,所以他返回的路径是
http://127.0.0.1/buy.hmtl/3
这样系统提示我无法找到该页面, 如果我删除后缀.html,返回路径为
http://127.0.0.1/buy/3
这样一切运行正常!  

所以我不知道,如何在不删除.html的情况下解决这个问题呢?
发表于 2009-11-18 23:47:08 | 显示全部楼层
翻页类不支持后缀,需自行扩展
 楼主| 发表于 2009-11-19 03:02:43 | 显示全部楼层
但是这个不是翻页类啊,这只是一个转换页面的代码

location='http://127.0.0.1/buy/3';

这个也需要自己想办法 是吗? 那样的话,设置  $config['url_suffix'] = ".html"; 岂不是累赘? 因为基本上,网站有可能会有类似 http://*****.org.cn/search.php?searchid=37&orderby=lastpost  这样的链接形式吧?
 楼主| 发表于 2009-11-19 03:59:09 | 显示全部楼层
http://127.0.0.1/goods/buy.html/3  的时候 显示错误
http://127.0.0.1/goods/buy/3 的时候 显示正常

那么有没有什么办法,在不删除 $config['url_suffix'] = ".html"; 的情况下,
http://127.0.0.1/goods/buy.html/3  显示正常
也就是说 可以执行 goods类下的 buy 的方法,并且可以获取参数 3 ?
发表于 2009-11-19 10:59:24 | 显示全部楼层
你去看翻页类源码就知道为什么了,翻页类比较简单,就两个方法
 楼主| 发表于 2009-11-20 08:03:06 | 显示全部楼层
随便问一下,如果我设置了$config['url_suffix'] = ".html";  那么在不采取第三方翻译类的情况下,我如何临时取消后缀呢? 因为它默认连接到http://127.0.0.1/goods/list.html/3  这个显然不行。

如果说,不能临时取消后缀的话,那么一个网站不可能没有翻页,那么翻页就会跟后缀冲突,那就是鱼和熊掌不可兼得。如果是这样的话,$config['url_suffix'] = ".html";的设置 他的初衷是什么呢?
 楼主| 发表于 2009-11-20 08:08:05 | 显示全部楼层
谁可以帮忙解决一下?
发表于 2009-11-20 10:26:27 | 显示全部楼层
注意你这句话
location.href = "'.site_url('buy/delete').'/" + status;
放到 site_url 里面才会自动加后缀。
这里用到了 js,那就不能这么简单拼接了。
你可以在 js 里加一个后缀,在 CI 里去掉自动加后缀。
总之 CI 没考虑到 ajax 的情况,所以你肯定要修改 CI 源码或者扩展点什么东西。
 楼主| 发表于 2009-11-20 21:36:03 | 显示全部楼层
我终于想了一个办法,比较雷人:

设置这个之后
$config['url_suffix'] = ".html"

再设置
$route['(:any)/(:any).html/(:any)'] = "$1/$2/$3";
发表于 2009-11-20 23:43:42 | 显示全部楼层
我觉得 js 和 php 根本就不要掺和到一起,有很多方案可以分离 PHP 和 js。

本版积分规则