我用tp和ajax做了一个搜索加分页的功能。先写的分页代码,没有问题。然后再加上了搜索条件,返回第一页是没有问题的,但点击下方分页条的第二页后,页面就空白没有返回值了。请大家帮我看看:
{$vv.user_id}
{$vv.user_name}
{$page}
/*这是用于搜索栏的点击效果设计*/
$(function(){
$('#sousuojian').click(function(){
var $searchword=$("#sousuolan").val();
if ($searchword=="") {
alert("搜索内容不得为空!");
$("#sousuolan").focus();
return false;
}
$.ajax({
type:'post',
url:'{:U('Dongzuo/search_page')}',
data:{searchword:$searchword},
success:function(res){$(".list").html(res);}
})
return false;});
});
/*这是用于分页条的点击效果设计*/
$(function(){
$(".fenyetiao a").live('click',function(){
var pageObj = this;
var url = pageObj.href
$.ajax({
type:'get',
url:url,
success:function(res){$(".list").html(res);}
})
return false;
})
});
/*这是控制器的模块*/
class DongzuoController extends BaseController
{
public function search_page()
{$searchword = I('searchword');
$userinfo = D('UsersInfo');
$count = $userinfo->where("user_name like '%{$searchword}%'")->count();
$Page = new \Think\Page($count,5);
$show = $Page->show();
$list = $userinfo->where("user_name like '%{$searchword}%'")->limit($Page->firstRow.','.$Page->listRows)->select();
if(IS_AJAX)
{
$this->assign('page',$show);
$this->assign('list',$list);
$html = $this->fetch('fenye/test1Page');
$this->ajaxReturn($html);
}
$this->display();
}
}
/*这是fetch的test1Page*/
{$vv.user_id}
{$vv.user_name}
{$page}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
打开chrome,按下F12,点击Network和Console,开始查看错误信息并调试。
你点击分页后列表边空白,绑定事件有效,使用ajax请求时,php代码返回值使用的thinkphp的ajaxReturn,这个方法返回的是数据库查询加过转换成的json数据,无法直接显示到html里。
用php拼接好<li>内容</li>,echo拼接好的字符串
打印一下你点击下一页或者某一页传递的页码是否被接收到了,问题应该出在这
使用TP框架,如果你使用的是原有的分页类进行分页是不能够实现ajax无刷新分页的,对分页类稍加改造或者你重写一个也行,我使用的方法就是在原来的分页类中添加一个参数(js中的方法名),然后在控制器中查询出数据调用分页类的时候多传入这个参数(js中的方法名),然后在js中设置全局页码就可以了
问题不够详细,代码也好乱
我就说一下我碰到这种情况时的解决思路:
1.js有报错吗?有:跳至2.没有:跳至3
2.检查报错内容,解决后跳至:3
3.页面空白(我猜是渲染那里空白),检查下点击第二次的请求是否成功.成功:跳至4.不成功:跳至5
4.看一眼返回值,如果格式正确则检查负责给页面渲染的那一部分js
5.解决不成功问题后跳转至4
首先,TP里生成的分页是一堆 a 标签,点击分页是跳转页面。
其次,你在代码中加入了 IS_AJAX 判断,如果是 ajax 的话就 assign 数据 $list
跳转分页的请求不是 ajax ,所以不走你判断的那里,第二页自然就是空白了