【问题标题】:Yii urlManager and jquery ajax GET requestYii urlManager 和 jquery ajax GET 请求
【发布时间】:2012-04-22 11:11:55
【问题描述】:

我在 urlmanager 中使用 seourlmanager 类。
有一个带有 ajax 自动完成功能的字段使用 Multicomplete Extension
扩展程序发送 ajax 请求,例如“controller/action?term=searchterm”。
问题是url管理器(seourlmanager)无法处理get查询。
在 url manager 我有这个规则:

'controller/action/<term:.*>'=>'controller/action' 

如何调整 url 管理器以同时使用 Multicomplete Extension 和 seourlmanager?

【问题讨论】:

    标签: php ajax yii


    【解决方案1】:

    尝试在您的配置文件中添加一个通用规则,如下所示:

    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    

    这将匹配典型的controller/action 格式,有或没有额外的查询参数。

    由于自动完成扩展使用?term=searchterm,所以?term不需要在规则中定义:

    /controller/action?term=searchterm - CORRECT
    
    /controller/action/term - INCORRECT
    

    【讨论】:

    • 您是否设置了 .html 后缀 ('urlSuffix' =&gt; '.html')?如果是这样,url 也应该使用后缀。尝试直接在浏览器中输入 url,看看哪种组合能给你正确的响应。
    【解决方案2】:

    我已更改 seourlmanager 类以在最后添加查询字符串:

    protected $_query;  
    public function init() {  
      ..  
      $this -> _query = (!empty($urlParts['query'])) ? $urlParts['query'] : '';  
      ..  
    }  
    protected function _connectUrlParts() {
      $scheme = $this -> _scheme . '://';
    
      $port = (!empty($this -> _port)) ? ':' . $this -> _port : '';
      if($this->_query=='')
        return $scheme . $this -> _host . $port . $this -> _path;
      else
        return $scheme . $this -> _host . $port . $this -> _path.'?'.$this->_query;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 2015-01-12
      • 1970-01-01
      相关资源
      最近更新 更多