tp5框架基于Ajax实现列表无刷新排序功能示例

 更新时间:2020年02月10日 09:11:38   作者:pan_yuyuan  
这篇文章主要介绍了tp5框架基于Ajax实现列表无刷新排序功能,结合实例形式详细分析了thinkPHP5结合Ajax实现列表无刷新排序的原理、操作步骤与相关注意事项,需要的朋友可以参考下

本文实例讲述了tp5框架基于Ajax实现列表无刷新排序功能。分享给大家供大家参考,具体如下:

在后台管理的时候我们有时需要对数据进行排序,以控制数据在模板显示的顺序,排序的原理就是修改数据库,然后更新视图。我们可以单独写一个方法来实现排序的功能,成功后刷新页面,也可以利用Ajax技术,实现数据的局部请求,也就是无刷新排序的功能。

现在想要达到的效果是在排序的input框中输入数值,点击排序实现无刷新排序的功能。

首先是表格(cate.html)这一块我们要单独摘出来,放入到一个单独页面当中,方便我们数据的请求。

<table class="table table-bordered">
{include file="news/cateajaxpage"}
</table>

其中cateajaxpage.html的内容为:

  <thead>
    <tr>
      <th>ID</th>
      <th>分类名称</th>
      <th>排序</th>
      <th>操作</th>
    </tr>
  </thead>
  <tbody>
    {volist name="news" id="vo"}
    <tr>
      <td>{$vo.id}</td>
      <td>{$vo.name}</td>
      <td><input type="text" value="{$vo.order}" name="{$vo.id}"></td>
      <td>
        <div class="btn-group open">
          <button data-toggle="dropdown" class="btn btn-primary dropdown-toggle" aria-expanded="true">操作 <span class="caret"></span>
          </button>
          <ul class="dropdown-menu">
            <li><a href="{:url('admin/news/cateadd',array('id'=>$vo.id))}" rel="external nofollow" >添加子分类</a>
            </li>
            <li><a href="{:url('admin/news/cateupd',array('id'=>$vo.id))}" rel="external nofollow" >修改</a>
            </li>
            <li><a href="javascript:if(confirm('确认删除?')) location='{:url('admin/news/del',array('id'=>$vo.id))}'" rel="external nofollow" >删除</a>
            </li>
          </ul>
        </div>
      </td>
    </tr>
    {volist name="$vo.children" id="vo1"}
    <tr>
      <td>{$vo1.id}</td>
      <td>|————{$vo1.name}</td>
      <td><input type="text" value="{$vo1.order}" name="{$vo1.id}"></td>
      <td>
        <div class="btn-group open">
          <button data-toggle="dropdown" class="btn btn-primary dropdown-toggle" aria-expanded="true">操作 <span class="caret"></span>
          </button>
          <ul class="dropdown-menu">
            <li><a href="{:url('admin/news/cateupd',array('id'=>$vo1.id))}" rel="external nofollow" >修改</a>
            </li>
            <li><a href="javascript:if(confirm('确认删除?')) location='{:url('admin/news/del',array('id'=>$vo1.id))}'" rel="external nofollow" >删除</a>
            </li>
          </ul>
        </div>
      </td>
    </tr>
    {/volist}
    {/volist}
  </tbody>

这里因为使用了无限级分类得到多维数组的技术,所以会有两个volist,如果你不太懂无限级分类的话可以分配过来一个普通的数据过来,重点是:

<input type="text" value="{$vo.order}" name="{$vo.id}"></td>

这句在显示排序值得同时,为每一个input框设置了一个name值,这个值就是分类的id值,通过这种方式,可以为列表当中的所有input框进行区分,且能通过数据库获取到对应的分类。

回到cate.html,写Ajax:

  $("#changeOrder").click(function(event) {
      /* Act on the event */
      var json = {};
      $("input").not('#top-search').each(function(index, el) {
        json[$(this).attr('name')] = $(this).val();
      });
      $.ajax({
        url: '{:url("admin/news/cate")}',
        type: 'post',
        data: json
      })
      .done(function(data) {
        $(".table-bordered").html(data);
        $(document).click();
      })
    });

其中changeOrder是我们为排序按钮添加的id值,我们把每一组id、order都放进json变量当中,传递给控制器。

控制器代码:

public function cate()
  {
    $news_model = model("Newsfenlei");
    if (request()->isAjax()) {
      $post = input('post.');
      foreach ($post as $key => $value) {
        db("newsfenlei")->where('id',$key)->update(['order'=>$value]);
      }
      $list = db("newsfenlei")->order('order desc')->select();
      $news = $news_model->getNews($list);
      $this->assign("news",$news);
      return view('cateajaxpage');
    } else {
      $list = db("newsfenlei")->order('order desc')->select();
      $news = $news_model->getNews($list);
      $this->assign("news",$news);
      return view();
    }
  }

因为涉及到无限级分类,所以使用了模型层获取数据,getNews方法是获取到无限级分类后的数据,这块大家可以直接使用数据库获取数据,需要注意的是处理Ajax请求的时候,我们根据POST信息进行数据更新,再数据更新以后再查询数据库,将数据分配到模板上。

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

相关文章

  • TP5框架实现上传多张图片的方法分析

    TP5框架实现上传多张图片的方法分析

    这篇文章主要介绍了TP5框架实现上传多张图片的方法,结合实例形式分析了TP5上传多张图片相关的视图、模型、控制器操作技巧,需要的朋友可以参考下
    2020-03-03
  • php上传文件常见问题总结

    php上传文件常见问题总结

    这篇文章主要介绍了php上传文件常见问题总结,基本上经常碰到的问题的处理都列了出来,有需要的小伙伴参考下。
    2015-02-02
  • ci检测是ajax还是页面post提交数据的方法

    ci检测是ajax还是页面post提交数据的方法

    这篇文章主要介绍了ci检测是ajax还是页面post提交数据的方法,以PHP的环境变量为基础实例展示了针对CI框架配置文件的修改技巧,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • PHP实现中文圆形印章特效

    PHP实现中文圆形印章特效

    心血来潮,写了个圆形印章生成器,字体的弧形旋转颇费功夫。总算效果还不错,代码存档。
    2015-06-06
  • PHP开源开发框架ZendFramework使用中常见问题说明及解决方案

    PHP开源开发框架ZendFramework使用中常见问题说明及解决方案

    Zend Framework(简写ZF)是由 Zend 公司支持开发的完全基于 PHP5 的开源PHP开发框架,可用于开发 Web 程序和服务,ZF采用 MVC(Model–View-Controller) 架构模式来分离应用程序中不同的部分方便程序的开发和维护。
    2014-06-06
  • Yii框架在页面输出执行sql语句以方便调试的实现方法

    Yii框架在页面输出执行sql语句以方便调试的实现方法

    这篇文章主要介绍了Yii框架在页面输出执行sql语句以方便调试的实现方法,涉及yiidebugtb的使用,是比较实用的技巧,需要的朋友可以参考下
    2014-12-12
  • PHP书写格式详解(必看)

    PHP书写格式详解(必看)

    下面小编就为大家带来一篇PHP书写格式详解(必看)。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • Laravel框架实现利用中间件进行操作日志记录功能

    Laravel框架实现利用中间件进行操作日志记录功能

    这篇文章主要介绍了Laravel框架实现利用中间件进行操作日志记录功能,结合实例形式分析了Laravel框架中间件的创建、引入以及使用中间件进行操作日志记录功能的相关实现技巧,需要的朋友可以参考下
    2018-06-06
  • PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)

    PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)

    这篇文章主要介绍了PhpStorm的使用教程(本地运行PHP+远程开发+快捷键),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • windows 2008r2+php5.6.28环境搭建详细过程

    windows 2008r2+php5.6.28环境搭建详细过程

    这篇文章主要介绍了windows 2008r2+php5.6.28环境搭建详细过程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06

最新评论