ThinkPHP3.2 结合Jquery Ajax 实现加载更多

梦想不抛弃苦心追求的人,只要不停止追求,你们会沐浴在梦想的光辉之中。再美好的梦想与目标,再完美的计划和方案,如果不能尽快在行动中落实,最终只能是纸上谈兵,空想一番。只要瞄准了大方向,坚持不懈地做下去,才能够扫除挡在梦想前面的障碍,实现美好的人生蓝图。ThinkPHP3.2 结合Jquery Ajax 实现加载更多,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

在Jquery中,ajax() 方法通过 HTTP 请求加载远程数据。该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。最简单的情况下,$.ajax() 可以不带任何参数直接使用。

如:实现加载更多功能

Application/Home/View/Work/works.html

<!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="UTF-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document - works</title>
	<link rel="stylesheet" type="text/css" href="__PUBLIC__/Home/css/works.css" />
	<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
	<!-- 作品列表 -->
	<div class="iso-box-wrapper">
	<volist name="works" id="vo">
		<div class="iso-box {$vo.type}">
			 	<div class="aaa" href="javascript:void(0)">
			 		<img class="aaa_img" src="{$vo.pic}" alt="{$vo.type}">
			 		<a href="javascript:void(0)" class="bbb" style="background-color: {$vo.title_color}">
		 				<p>{$vo.title}</p>
		 			</a>
		 			<div class="ccc">
		 				<span class="works_id" style="display: none;">{$vo.id}</span>
		 			</div>
			 	</div>
			 </div>
	</volist>
	</div>

	<!-- 加载更多 -->
	<div class="load_more" style="width: 100%;height: 40px;background-color: ;clear: both;position: relative;text-align: center;">
		<a href="javascript:void(0)" id="load_more">加载更多</a>
	</div>

	<!-- ajax请求 -->
	<script>
		$(document).ready(function() {
	        var node = 0;
			$('#load_more').click(function() {
			    var iso_box = $(".iso-box .aaa").length;//当前iso-box个数
			    // alert(iso_box);
			    node += 8;//点击一次追加8条
			    $.ajax({
			        url:'{:U("worksdata")}',
			        cache: false,
			        async: false,
			        data:{node:node,n:iso_box},
			        dataType: "json",
			        type:"post",
			        success:function(datas){
			            var more_show = datas[0];
			            var data = datas[1];
			            var iso_box_html='';
			            var iso_box_css_js='';

			            if (more_show == 1) {
			                $("#load_more").show();
			            }else{
			                $("#load_more").hide();
			                // $("#load_more").text("全部加载完毕!");
			            }
			            var iso_box_ajax = $(".iso-box-wrapper");

			            for (var i in data) { //循环遍历
			            	iso_box_html +='<div class="iso-box '+data[i].type+'">';
			            		iso_box_html +='<div class="aaa" href="javascript:void(0)" data-lightbox-gallery="portfolio-gallery">';
			            			iso_box_html +='<img class="aaa_img" src="'+data[i].pic+'" alt="'+data[i].type+'">';
			            			iso_box_html +='<a href="javascript:void(0)" class="bbb" style="background-color: pink">';
			            				iso_box_html +='<p>'+data[i].title+'</p>';
			            			iso_box_html +='</a>';
			            			iso_box_html +='<div class="ccc">';
			            				iso_box_html +='<span class="works_id" style="display: none;">'+data[i].id+'</span>';
			            			iso_box_html +='</div>';
			            		iso_box_html +='</div>';
			            	iso_box_html +='</div>';
			            }
			            iso_box_ajax.append(iso_box_html);
			        }
			    }); 
			});
		});
    </script>

	<!-- 注意,ajax请求得到的新数据元素的click,mouseenter等事件是丢失的,是失去动态效果,需要给这些元素重新绑定事件! -->
	<script>

		/**
		 * Jquery
		 */
		$(document).ready(function() {

			/**
			 * 动画事件
			 */
			// if ($("body").width()>='1320'){
			// 	$('.iso-box').each(function(e) {
			// 		$(this).mouseenter(function(){
			// 			$(this).find('.aaa_img').stop().animate({top:"-19%"},{easing: 'easeOutExpo'});
			// 			$(this).find('.bbb').stop().animate({top:"62%"},{easing: 'easeOutExpo'});
			// 		})
			// 		$(this).mouseleave(function(){
			// 			$(this).find('.aaa_img').stop().animate({top:"0%"},{easing: 'easeOutExpo'});
			// 			$(this).find('.bbb').stop().animate({top:"100%"},{easing: 'easeOutExpo'});
			// 		})
			// 	})
			// }

			// // 重新绑定所有动画事件
			if ($("body").width()>='1320'){
				$('body .iso-box').each(function(e) {
					// $(this).mouseenter(function(){
					$("body").on("mouseenter", ".iso-box", function() {
						$(this).find('.aaa_img').stop().animate({top:"-19%"},{easing: 'easeOutExpo'});
						$(this).find('.bbb').stop().animate({top:"62%"},{easing: 'easeOutExpo'});
					})
					// $(this).mouseleave(function(){
					$("body").on("mouseleave", ".iso-box", function() {
						$(this).find('.aaa_img').stop().animate({top:"0%"},{easing: 'easeOutExpo'});
						$(this).find('.bbb').stop().animate({top:"100%"},{easing: 'easeOutExpo'});
					})
				})
			}

			/**
			 * 鼠标点击事件跳转详情页面
			 */
			// $('.iso-box').each(function(e) {
			// 	$(this).on("click",function(){

			// 		var works_id = $(this).find('.works_id').text();
			// 		var head_menu_height = $(".gn-head").height();
					
			// 		setTimeout(reDo, 0);
			// 		function reDo(){
			// 			setTimeout(Redirect_url, 1000);
			// 			function Redirect_url(){
			// 				window.location.href = "";
			// 			}
			// 		}
			// 	})
			// })

			// 重新绑定所有鼠标点击事件跳转详情页面
			$("body").on("click", ".iso-box", function() {
				// $(this).on("click",function(){

					var works_id = $(this).find('.works_id').text();
					var head_menu_height = $(".gn-head").height();
						
					setTimeout(reDo, 0);
					function reDo(){
						setTimeout(Redirect_url, 1000);
						function Redirect_url(){
							window.location.href = "";
						}
					}
				// })
			})
			
		})
	</script>
</body>
</html>

Application/Home/Controller/WorkController.php

<?php
namespace Home\Controller;

use Think\Controller;

class WorkController extends Controller{
    public function works()
    {
    	$works = D('Work')->limit(16)->order('id asc')->select();
        $total = D('Work')->count();

    	$this->assign('works',$works);
        $this->assign('total',$total);

        $this->display();
    }

    public function worksdata()
    {
        // 获取作品总数
        $count = D('Work')->count();
        if(!empty($_POST['node'])){  //点击加载更多 
            $node = $_POST['node'];//8
            $n = $_POST['n'];//16

            if (($node+$n)>=$count) {//24>17
                $flag =0;
            }else{
                $flag =1;
            }

            $bnode= 8; //显示个数
            $list  = D('Work')->limit($n,$bnode)->order('id asc')->select();
            $arr[0] = $flag;
            $arr[1] = $list;
            $arr.join();
            $this->ajaxReturn($arr,'JSON');
        }
    }
}

ThinkPHP3.2 结合Jquery Ajax 实现加载更多

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/151210.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!