jquery实现下拉加载(附php数字签名规则
博客专区 > phala 的博客 > 博客详情
jquery实现下拉加载(附php数字签名规则
phala 发表于2年前
jquery实现下拉加载(附php数字签名规则
  • 发表于 2年前
  • 阅读 52
  • 收藏 11
  • 点赞 1
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: reffer:http://www.bkjia.com/Javascript/1117111.html
    //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('<p class="load padding5">loading...</p>')}, 
        success:function(data){
            $("p.load").remove();
            var start = data.indexOf('<ul class="goods-list-1 pad-right-2">');
            var end = data.indexOf('</ul>',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的私钥解密。


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 5
博文 101
码字总数 53470
×
phala
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: