天梯梦 发表于 2009-11-18 22:39:41

关于添加后缀的问题

我在config里面设置了
$config['url_suffix'] = ".html";

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

      $data['jquery'] = '
      $("input").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的情况下解决这个问题呢?

visvoy 发表于 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 ?

visvoy 发表于 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

谁可以帮忙解决一下?

Hex 发表于 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";

Hex 发表于 2009-11-20 23:43:42

我觉得 js 和 php 根本就不要掺和到一起,有很多方案可以分离 PHP 和 js。
页: [1] 2
查看完整版本: 关于添加后缀的问题