_param无法取到参数

浏览:3517 发布日期:2013/05/14
3.1.2 - 致命 - 未处理
通过ajax分页请求http://localhost/User/index/p/2.htm//UserAction
public function index(){
        $p  = $this->_param("p");
        dump($p);
//前台结果为NULL,通过_GET('p')可以正确得到2,通过$this->_param()可以看到参数集有p
}
查看了一下源码,_param代码片段如下//File:ThinkPHP/Lib/Core/Action.class.php
//Line:220
case '_param'   :  
    switch($_SERVER['REQUEST_METHOD']) {
        case 'POST':
            $input  =  $_POST;
            break;
        case 'PUT':
            parse_str(file_get_contents('php://input'), $input);
            break;
        default:
            $input  =  $_GET;
    }
    if(C('VAR_URL_PARAMS')){
        $params = $_GET[C('VAR_URL_PARAMS')];
        $input  =   array_merge($input,$params);
    }
    break;
问题所在:分页参数p是通过url提交的(GET),但是请求方式是POST
所以没有正确取到参数。参见Page.class.php的ajax js……
 var link=$(this).attr('href');
if(!link)return false;
$.ajax({
    url: link,
    dataType: "html",
    type: "POST",
……
修补建议:不建议把ajax分页请求方式改为get,不然这个_param纯属鸡肋。
建议合并POST和GET参数集到_param
评论(
后面还有条评论,点击查看>>