//drop autoload var page = 1,tmp; var totalPage = $(".page a").length-2; //Prevent multiple nextPage() calls var stop = false; $(window).scroll(function () { var scrollTop = $(this).scrollTop(); var scrollHeight = $(document).height(); var windowHeight = $(this).height(); if (scrollTop + windowHeight >= scrollHeight) { if(stop==false){ page++; if (page <= totalPage) { stop=true; nextPage(page); } } } }); function nextPage(page){ $.ajax({ type: 'get', url: window.location+"&page="+page, beforeSend:function(){$("ul").append(' loading... ')}, success:function(data){ $("p.load").remove(); var start = data.indexOf('
- '); var end = data.indexOf('',start)+5; var add = data.substring(start,end); $(add).each(function(){ $("ul").append($(this).html()); }); stop = false; } }); }
|workflow
1.获取页面滚动事件
可以直接$(window).scroll()来获取。也可以用bind绑定scroll动作:
$(function(){ $(window).bind('scroll',function(){}); }
2.判断滚动范围是否超出屏幕底部
即滚动条位置+窗口高度 >= 文档高度,则加载下一页内容:
if ($(this).scrollTop() + $(this).height() >= $(document).height()) {}
scrollTop() 方法返回或设置匹配元素的滚动条的垂直位置。
3.$.ajax({ })获取下一页内容再append到页面中
因为后台返回的是一个完整的html页面,所以用indexOf+substring截取需要的ul列表,最后再append。
注意还需要设置一个flag来防止scroll的多次触发,默认为false,当ajax success执行完后再赋值true。
|签名规则
做api测试时需要生成signature,假设request是user_id 、oder_id、sign
然后user_id有唯一的key对应
用表单提交会得到一个数组
$arr( 'user_id' => 22, 'order_id' => 58, 'key' =>asdf)
下面进行签名的生成
$key =$arr['key']unset($arr['key']); $arr = ksort($arr);//数组按照键名排序$str = json::encode($arr);$str.=$key;$sign = md5($str);
其实做的时候也不是很清楚签名的作用,所以去学习了一下。
【数据加密】用公钥加密,防篡改
只有用私钥解密,因为私钥只有自己有,所以保证了数据不能被别人看到
【签名】私钥加密,防泄漏只能用公钥解密,任何人都可以用公钥验证。因为私钥只有自己有,所以它可以保证数据只能是自己发出的,不可能有别人发出,除非私钥丢失或被第三方破解出来
这样也大概理解
【签名】客户端A,签名表示这个请求是A发起的,而只要有公钥的服务器就可以查看A的签名从而验证客户端。
【加密】服务端希望数据只能被A客户端看到,所以加密了数据,并且数据只能被A的私钥解密。