关于thinkphp的ajax搜索加分页功能,点击第二页后无返回值

我用tp和ajax做了一个搜索加分页的功能。先写的分页代码,没有问题。然后再加上了搜索条件,返回第一页是没有问题的,但点击下方分页条的第二页后,页面就空白没有返回值了。请大家帮我看看:

<form>
<input type="text" value="" placeholder="请输入搜索内容。" id="sousuolan">
<button id="sousuojian" onclick="return false;">搜索</button>
</form>

<div class="list">
    <foreach name="list" item="vv">
        <div class="tile">{$vv.user_id}</div>
        <div class="content">{$vv.user_name}</div>
        <hr />
    </foreach>
    <div class="fenyetiao">{$page}</div> 
</div>



/*这是用于搜索栏的点击效果设计*/
$(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*/

<foreach name="list" item="vv">
            <div class="tile">{$vv.user_id}</div>
            <div class="content">{$vv.user_name}</div>
    <hr />
</foreach>

<div class="fenyetiao">
    {$page}

</div>
阅读 3.3k
4 个回答

打开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 ,所以不走你判断的那里,第二页自然就是空白了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题