用jquery.grid-a-licious实现瀑布流,无法自动加载数据的问题

huaiping 2015-06-28 07:02:44
使用的是官方jquery 2.1.4 + bootstrap 3.3.5 + grid-a-licious.jquery插件,没有修改过这几个文件。
返回的json数据格式和内容都正确。


<div class="content container">
<div id="device" class="gridalicious row">
<div class="galcolumn">
<div class="item"><img src="/image/photo1.jpg" /><p>瀑布流特效1</p></div>
<div class="item"><img src="/image/photo2.jpg" /><p>瀑布流特效2</p></div>
<div class="item"><img src="/image/photo3.jpg" /><p>瀑布流特效3</p></div>
<div class="item"><img src="/image/photo4.jpg" /><p>瀑布流特效4</p></div>
<div class="item"><img src="/image/photo5.jpg" /><p>瀑布流特效5</p></div>
<div class="item"><img src="/image/photo6.jpg" /><p>瀑布流特效6</p></div>
<div class="item"><img src="/image/photo7.jpg" /><p>瀑布流特效7</p></div>
<div class="item"><img src="/image/photo8.jpg" /><p>瀑布流特效8</p></div>
<div class="item"><img src="/image/photo9.jpg" /><p>瀑布流特效9</p></div>
<div class="item"><img src="/image/photo10.jpg" /><p>瀑布流特效10</p></div>
</div>
</div>
</div>

<script type="text/javascript">
//滚动条滚动时添加内容
makeboxes = function() {
var boxes = new Array;
var jsonLength = 0;
$.ajax({
type: 'POST',
url : '/photo/loading',
//data: {'page':page},
dataType : 'json',
success : function(data) {
if (typeof data === 'object') {
for (var items in data) {
jsonLength++;
}
for (var i=0, l=jsonLength; i<l; i++) {
div = $('<div></div>').addClass('item');
content = '<img src="'+data[i].url+'" /><p>'+data[i].description+'</p>';
div.append(content);
boxes.push(div);
}
return boxes;
}
}
});
}
//滚动条事件
$(document).ready(function () {
$(window).scroll(function () {
if(($(window).scrollTop() + $(window).height()) == $(document).height()) {
$("#device").gridalicious('append', makeboxes());
}
});
//主要部分
$("#device").gridalicious({
gutter: 15,
width: 300,
animate: true,
animationOptions: {
speed: 150,
duration: 400,
complete:function(data){
}
},
});
});
</script>


在Chrome的控制台报错信息:
Uncaught TypeError: Cannot read property 'length' of undefined jquery.js:348


IE 11的控制台报错信息:
SCRIPT5007: 无法获取未定义或 null 引用的属性“length”
文件: jquery.min.js,行: 2,列: 2724
...全文
84 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2015-06-29
  • 打赏
  • 举报
回复
你的makeboxs就没有返回值。。注意return的位置,你在回调中return的值并不是你的makeboxes的返回值
    makeboxes = function() {
        var boxes = new Array;
        var jsonLength = 0;
        $.ajax({
            type: 'POST',
async:false,///////////////////同步
            url : '/photo/loading',
            //data: {'page':page},
            dataType : 'json',
            success : function(data) {
                if (typeof data === 'object') {
                    for (var items in data) {
                        jsonLength++;
                    }
                    for (var i=0, l=jsonLength; i<l; i++) {
                        div = $('<div></div>').addClass('item');
                        content = '<img src="'+data[i].url+'" /><p>'+data[i].description+'</p>';
                        div.append(content);
                        boxes.push(div);
                    }
                   ////////////////////////////////////// return boxes;
                }
            }
        });
       return boxes;//////////////////////////////////////
    }

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧