全局事件ajaxStart、ajaxStop不执行
最近一直都在研究【锋利的jQuery】,确实是一本好书,受益匪浅。但由于技术发展及版本更新等原因,里面还是有些坑需要踩的。
比如:第六章七节中提到的全局事件ajaxStart、ajaxStop照着案例敲结果并不会执行。
在查阅资料后,发现原来在jquery1.9+版本以后,ajax全局事件需绑定到document对象上才能触发。
下面是各版本不同写法: 阅读详细 »
页面滚动到底部 ajax加载内容代码 示例代码
页面滚动到底部 ajax加载内容代码:
html结构:
<div class="ipshowListA">
<ul class="clearfix">
<!--<li class="item">内容块</li>-->
</ul>
</div>
<div class="pagesA">
<div class="more" data-url = "jsonlist.php?page=1" >点击加载更多</div>
<div class="loading"><!--数据加载中...--></div>
<div class="nodata">没有更多数据了...</div>
</div>
js代码:
// JavaScript Document
$(function(){
var $btn_more = $('.pagesA .more');//更多按钮
var $btn_loading = $('.pagesA .loading');//载入中
var $btn_nodata = $('.pagesA .nodata');//没有数据了
var $box = $('.ipshowListA ul');//容器
var lock = false;
var nexturl = $btn_more.data('url');//第一次url
function _more(){
$btn_more.show();
$btn_loading.hide();
$btn_nodata.hide();
}
function _loading(){
$btn_more.hide();
$btn_loading.show();
$btn_nodata.hide();
}
function _nodata(){
$btn_more.hide();
$btn_loading.hide();
$btn_nodata.show();
}
//点击触发 (ajax加载数据)
$btn_more.on('click',function(){
ajaxLoad();
});
//距离底部300触发 (ajax加载数据)
$(window).on('scroll',function(){
if( $(document).height() - $(window).scrollTop() - $(window).height() < 300 ){
ajaxLoad();
}
})
//ajax加载数据
function ajaxLoad(){
//锁
if( lock ){return false; }else{ lock = true; }
_loading();
$.ajax({
url:nexturl,
type:'get',
dataType:'json',
success:function(d){
//{"error":0 , "msg":"ok" , "html":"6666", "nexturl":"jsonlist.php?page=1"}
if(d.error == 0 ){
//加载成功
$box.append( d.html );
lock = false;
_more();
nexturl = d.nexturl; //更新下一页地址
}else if(d.error == 1 ){
//没有数据了
_nodata();
}else{
//其他错误
alert( d.msg );
lock = false;
}
},
error:function( a,b,c){
console.log('ajax错误:', a,b,c );
}
})
}
});
php代码:
<?php
sleep(3);//模拟网络延时 3秒
//返回的 json数据结构
//{"error":0 , "msg":"ok" , "html":"6666", "nexturl":"jsonlist.php?page=1"}
$page = $_GET['page'];
if( $page > 5 ){
//没有数据了
//{"error":1 , "msg":"没有数据了" , "html":"", "nexturl":""}
$j = array();
$j['error'] = 1;
$j['msg'] = '没有数据了';
$j['nexturl'] = '';
$j['html'] = '';
die( json_encode($j) );
}
/////////////////////////////////////////////////////////////////////////////
$page++;
$j = array();
$j['error'] = 0;
$j['msg'] = 'ok';
$j['nexturl'] = 'jsonlist.php?page=' . $page;
$j['html'] = '
<li class="item">内容块</li>
<li class="item">内容块</li>
<li class="item">内容块</li>
...
';
die( json_encode($j) );