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
