滑轮滚动到页面底部ajax加载数据配合json实现

滚动下拉到页面底部加载数据是很多瀑布流网站的做法,那来看看配合jsonp是如何实现的吧,小菜总结记录之用,高手勿喷。

当然本例子采用的是jquery库,后期会做成原生js。 
本例的数据调用的是锋利的jquery一书提供的一段json。 

首先要先判断页面怎么样才是滚动到底部,也就是scrollTop+window的height是否大于document的height,jquery如下代码: $(window).scrollTop()+$(window).height()>=$(document).height(); 
再给window绑定scroll事件。所以整个页面demo可以这样做: 
拉到底部就是实现异步数据加载了,当然了,实际项目还要加上如果没数据了要怎么显示,怎么操作。这些加判断就行了。

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns=" http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<style type="text/css"> 
* { margin:0; padding:0;} 
body { font-size:12px;} 
p{ margin: 5px;} 
.box{ padding: 10px;} 
</style> 
<!-- 引入jQuery --> 
<script src=" http://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(function(){ 
$(window).bind('scroll',function(){show()}); 
function show() 

if($(window).scrollTop()+$(window).height()>=$(document).height()) 

ajaxRead(); 


function ajaxRead() 

var html=""; 
$.ajax({ 
type:'get', 
dataType:'jsonp', 
url:' http://api.flickr.com/services/feeds/photos_public.gne?tags=car&tagmode=any&format=json&jsoncallback=?', 
beforeSend:function(){console.log('loading...')}, 
success:function(data){ 
$.each(data.items,function(i,item){ 
html+='<div class="box">'; 
html+='<h1>'+item.title+'</h1>'; 
html+='<a hreft="'+item.link+'"><img src="'+item.media.m+'"/></a>' 
html+='<div>'+item.tags+'</div>'; 
html+='</div>'; 
}); 
$("#resText").append($(html)); 
}, 
complete:function(){console.log('mission acomplete.')} 
}); 

}) 
</script> 
</head> 
<body> 
 往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  往下拉  
<div id="resText" > 
</div> 
</body> 
</html> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过监听窗口的滚动事件,判断当前滚动位置是否到达底部,如果到达底部则发送请求。具体实现步骤如下: 1. 在setup函数中引入axios。 ``` import axios from 'axios'; ``` 2. 在template中添加一个元素作为滚动区域,并为它绑定一个滚动事件。 ``` <template> <div ref="scrollArea" @scroll="handleScroll"> <!-- 滚动内容 --> </div> </template> ``` 3. 在setup函数中定义handleScroll函数,并在其中判断当前滚动位置是否到达底部。 ``` setup() { const scrollArea = ref(null); // 滚动区域 const page = ref(1); // 当前页数 const loading = ref(false); // 是否正在加载中 // 滚动底部时触发 const handleScroll = () => { const scrollTop = scrollArea.value.scrollTop; // 滚动距离 const scrollHeight = scrollArea.value.scrollHeight; // 总高度 const clientHeight = scrollArea.value.clientHeight; // 可视高度 if (scrollTop + clientHeight >= scrollHeight) { loadMoreData(); // 加载更多数据 } }; // 加载更多数据 const loadMoreData = async () => { if (loading.value) return; // 如果正在加载中则返回 loading.value = true; // 设置正在加载状态 try { const res = await axios.get(`/api/data?page=${page.value}`); // 发送请求 // 处理获取到的数据 page.value += 1; // 更新页数 } catch (error) { console.log(error); } finally { loading.value = false; // 取消加载状态 } }; onMounted(() => { loadMoreData(); // 初始化时加载数据 }); return { scrollArea, handleScroll }; } ``` 4. 在loadMoreData函数中发送axios请求获取更多数据,并在请求完成后更新页数和loading状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值